創建你自己的控件是這裏的方法。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。新控件顯示在工具箱的頂部。您需要實施BadValue事件來警告用戶輸入的文本不適合。當Value屬性更改時,ValueChanged可用於獲取事件。
using System;
using System.Windows.Forms;
class ValueBox : TextBox {
public event EventHandler BadValue;
public event EventHandler ValueChanged;
private int mValue;
public int Value {
get { return mValue; }
set {
if (value != mValue) {
mValue = value;
OnValueChanged(EventArgs.Empty);
base.Text = mValue.ToString();
}
}
}
protected void OnValueChanged(EventArgs e) {
EventHandler handler = ValueChanged;
if (handler != null) handler(this, e);
}
protected void OnBadValue(EventArgs e) {
EventHandler handler = BadValue;
if (handler != null) handler(this, e);
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
base.Text = mValue.ToString();
}
protected override void OnValidating(System.ComponentModel.CancelEventArgs e) {
int value;
if (!int.TryParse(base.Text, out value)) {
SelectionStart = 0;
SelectionLength = base.Text.Length;
e.Cancel = true;
OnBadValue(EventArgs.Empty);
}
else base.OnValidating(e);
}
}
謝謝,我省略了一些錯誤檢查代碼。 – Benny 2010-02-25 10:57:59
David Mortons的建議可能是最好的,那麼編寫一個擴展TextBox的NumberBox類並寫一次轉換例程。 您可以創建一個SupportsFloat屬性並使用它來控制轉換例程,或者實際上只需編寫一個IntBox和FloatBox控件。 如果這是ASP.Net我建議使用控件擴展,不知道如果winforms有類似的想法? – 2010-02-25 11:03:00