訣竅是將文本框嵌入到數字updown控件中,並處理其Validating事件。
這裏是如何把它做:
創造一個虛擬的形式,並添加一個數字沿着上下控制和其他一些控制,而當數字unpdown控制失去焦點,窗體的文本將被設置爲用戶輸入的值。
這是什麼我也做了代碼:
public partial class Form1 : Form
{
TextBox txt;
public Form1()
{
InitializeComponent();
txt = (TextBox)numericUpDown1.Controls[1];//notice the textbox is the 2nd control in the numericupdown control
txt.Validating += new CancelEventHandler(txt_Validating);
}
void txt_Validating(object sender, CancelEventArgs e)
{
this.Text = txt.Text;
}
}
編輯:
@Carlos_Liu:好的,我現在可以看到這個問題,你可以用這個實現TextChanged事件,只是保存值虛擬變量,並在txt_Validating重用,但要謹慎,除非文本框集中不更新這個變量。
這是新的示例代碼:
public partial class Form1 : Form
{
TextBox txt;
string val;
public Form1()
{
InitializeComponent();
txt = (TextBox)numericUpDown1.Controls[1];//notice the textbox is the 2nd control in the numericupdown control
txt.TextChanged += new EventHandler(txt_TextChanged);
txt.Validating += new CancelEventHandler(txt_Validating);
}
void txt_TextChanged(object sender, EventArgs e)
{
if (txt.Focused) //don't save the value unless the textbox is focused, this is the new trick
val = txt.Text;
}
void txt_Validating(object sender, CancelEventArgs e)
{
MessageBox.Show("Val: " + val);
}
}
編輯#2
@Carlos_Liu:如果您需要輸入的值必須保持,還有做一招所以:@文本框的驗證事件,檢查值,如果它不在範圍內,取消放棄焦點!
下面是代碼的一個新版本:
public partial class Form1 : Form
{
TextBox txt;
string val;
public Form1()
{
InitializeComponent();
txt = (TextBox)numericUpDown1.Controls[1];
txt.TextChanged += new EventHandler(txt_TextChanged);
txt.Validating += new CancelEventHandler(txt_Validating);
}
void txt_TextChanged(object sender, EventArgs e)
{
if (txt.Focused)
val = txt.Text;
}
void txt_Validating(object sender, CancelEventArgs e)
{
int enteredVal = 0;
int.TryParse(val, out enteredVal);
if (enteredVal > numericUpDown1.Maximum || enteredVal < numericUpDown1.Minimum)
{
txt.Text = val;
e.Cancel = true;
}
}
}
我不相信這是可能的,但1,因爲它是我敲了過去太有問題。我結束了切換回普通的舊文本框。 – 2010-02-23 04:12:13
+1給馬特。NumericUpDown控件是有史以來最噁心的控件。我從來沒有觀察到用戶實際上點擊這些小按鈕或使用箭頭鍵。他們只是打字。如果你在平板電腦上,上帝會幫助你。 – Josh 2010-02-23 04:23:24
@Carlos_Liu:在您對問題進行修改後,我更新了以下答案。順便說一句:它適用於你在上面描述的所有場景。試試吧,讓我們知道結果;-) – 2010-02-25 06:50:51