我發現這個自定義類允許NumericUpDown
接收空值。我在一個可以爲空的編輯表單中使用它,或者可以使用來自數據庫的數據填充來自需要可爲空的值的數據。Windows窗體 - 自定義NumericUpDown爲空
這是當前的代碼:
public partial class NullableNumericUpDown : NumericUpDown
{
public NullableNumericUpDown()
{
InitializeComponent();
}
public NullableNumericUpDown(IContainer container)
{
container.Add(this);
InitializeComponent();
}
private int? _value;
[Bindable(true)]
public new int? Value
{
get
{
return _value;
}
set
{
_value = value;
if (value != null)
{
base.Value = (int)value;
Text = Value.ToString();
}
else
{
Text = "";
}
}
}
private void NullableNumericUpDown_ValueChanged(object sender, EventArgs e)
{
_value = (int)base.Value;
}
void NullableNumericUpDown_TextChanged(object sender, System.EventArgs e)
{
if (Text == "")
{
_value = null;
}
}
}
我是相當新的C#,所以我不能說我完全理解的代碼,但不過,我的問題是,當我用數據填充表單從數據庫和NullableNumericUpDown
有什麼價值,比如說 - 3
。當我將此值更改爲5
時,我從表格中提交的數據中獲得的最終結果是53
。另外,如果我刪除3
,然後按遞增箭頭我得到4
。似乎最初的數據是保存在這個控制的整個生命週期中,我試圖設置0
在我認爲它可能會幫助的一些目前的地方,但它不會,除了我需要擺脫這一事實初始值,如果控制的值被改變,實際上它不夠,只是使其成爲0
因爲如果我有空的控制,這一定是好的,並將其記錄爲null
而不是0
。
只是要完成這裏是我如何設置數據爲NullableNumericUpDown
控制:
numUpDnAreas.Value = entity.AreasCnt;
這發生在我的form_load
事件。當我點擊Save
按鈕,我收集的數據與此:
entity.AreasCnt = numUpDnAreas.Value;
可以將此代碼進行重構,以滿足我的需求,或者我應該離開它,只是使用類似MaskedTextBox
或其他?
謝謝,我是C#初學者,需要一個快速的解決方案,這似乎不存在,所以我要修改一個'MaskedTextBox'。無論如何,稍後在我的編程生涯中,我可能會回到你的答案。 – Leron 2013-03-14 11:10:23
看看你是否可以使用工具包中的UpDownControl,測試它是否適用於你,幾乎不會花費幾分鐘的時間,你總是可以回到你的MaskedTextBox – 2013-03-14 12:29:30