NumericUpDown
2 つのコントロールを使用して、スケジュールされたタスクを実行する日時をユーザーが選択できるようにしています。
09:00
の代わりに表示するために、1 桁の値の先頭に 0 を追加したいと思います9:0
。
NumericUpDown
2 つのコントロールを使用して、スケジュールされたタスクを実行する日時をユーザーが選択できるようにしています。
09:00
の代わりに表示するために、1 桁の値の先頭に 0 を追加したいと思います9:0
。
決定的な解決策は、DateTimePicker
with ShowUpDown
set toTrue
およびFormat
set to Time
orを使用することCustom
です。後者の場合、hh:mm
またはHH:mm
をカスタム形式として使用します。
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 に合わせて簡単に変更できるはずです。
いい考えがあるよ~ 数値アップダウンコントロールのテキストボックス部分を覆うテキストボックスを入れたらどうだろう(数値アップダウンのスクロールだけが表示される)。
初期値として「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
これは、NumericUpDown コントロールでは不可能です。
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;
}
}
}