7

NumericUpDown2 つのコントロールを使用して、スケジュールされたタスクを実行する日時をユーザーが選択できるようにしています。

09:00の代わりに表示するために、1 桁の値の先頭に 0 を追加したいと思います9:0

4

5 に答える 5

6

決定的な解決策は、DateTimePickerwith ShowUpDownset toTrueおよびFormatset to Timeorを使用することCustomです。後者の場合、hh:mmまたはHH:mmをカスタム形式として使用します。

于 2011-02-17T10:49:43.720 に答える
5
class CustomNumericUpDown:System.Windows.Forms.NumericUpDown
{
    protected override void OnTextBoxTextChanged(object source, EventArgs e)
    {
        TextBox tb = source as TextBox;
        int val = 0;
        if (int.TryParse(tb.Text,out val))
        {
            if (val < 10)
            {
                tb.Text = "0" + val.ToString();
            }
        }
        else
        {
            base.OnTextBoxTextChanged(source, e);
        }
    }
}

今朝これを行う必要があり、Windows フォーム アプリケーション用にカスタマイズされた Numeric Up Down を思いつきました。これは、VB.NET に合わせて簡単に変更できるはずです。

于 2011-07-14T10:41:33.550 に答える
2

いい考えがあるよ~ 数値アップダウンコントロールのテキストボックス部分を覆うテキストボックスを入れたらどうだろう(数値アップダウンのスクロールだけが表示される)。

初期値として「00」を使用してテキストボックスを設定し、それを無効にして、ユーザーがテキストボックスを制御できないようにします。

次に、次のコードを入力します。

Private Sub numericupdown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ndFrom.ValueChanged

        If numericupdown1.Value < 10 Then
            textbox1.Text = "0" & numericupdown1.Value
        Else
            textbox1.Text = numericupdown1.Value
        End If


End Sub
于 2011-02-17T06:53:38.107 に答える
2

これは、NumericUpDown コントロールでは不可能です。

于 2010-08-17T12:03:19.757 に答える
-1
class MyNumericUpDown : System.Windows.Forms.NumericUpDown
{
   public override string Text
   {
      get
      {
         return base.Text;
      }
      set
      {
         if (value.Length < 2)
            value = "0" + value;

         base.Text = value;
      }
   }
}
于 2013-06-03T21:56:31.427 に答える