類似textbox控制元件,假如用戶需要輸入“123”,“abc”...想在輸入完整后觸發一個事件處理程式。
注意前提是控制元件值有修改、輸入完整時觸發。
若用TextChanged,修改每一個字符都會觸發。而用Validated,則無論是否修改都會觸發。
我現在用的辦法是在TextChanged事件中記錄值已改變,在Validated事件中檢查到若已改變再進一步處理。請問有沒有更直接的方法?
uj5u.com熱心網友回復:
什么叫輸入完整呢要么接收enter觸發
uj5u.com熱心網友回復:
完整輸入的意思就是比如要輸入“123”,必須 是輸入完"123"時才觸發,不是輸入“1”不觸發。
接收enter觸發這樣改變了用戶的操作習慣,可能會接受。
uj5u.com熱心網友回復:
自己去判斷唄,少于你的內容長度直接跳出,記錄上一次文字的內容跟這次的比對,不同才做處理uj5u.com熱心網友回復:
1.定義一個全域變數:private string global_str;
2.假設控制元件名稱是txtName
3.在MouseLeave事件里寫如下代碼:
private void txtName_MouseLeave(object sender, EventArgs e)
{
string name = this.txtName.Text.Trim();
//判斷用戶輸入不為空,并且新的輸入值不等于定義的全域變數
if (name != string.Empty && !name.Equals(global_str))
{
//這里執行輸入改變后,你要執行的代碼
}
}
uj5u.com熱心網友回復:
可以參考文本框焦點離開,引發該事件, 如果要用回車鍵,事件也有匹配 enter 的按鍵的代碼private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//...............
uj5u.com熱心網友回復:
修改一下,上面忘記重新給全域變數賦值了
private void txtName_MouseLeave(object sender, EventArgs e)
{
string name = this.txtName.Text.Trim();
//判斷用戶輸入不為空,并且新的輸入值不等于定義的全域變數
if (name != string.Empty && !name.Equals(global_str))
{
//保存新的變數值
global_str = name;
//這里執行輸入改變后,你要執行的代碼
}
}
uj5u.com熱心網友回復:
什么叫輸入完整?你需要有明確嚴謹的定義才好設計開發,不是簡單舉個例子就行。這類需求遇到過好多,客戶可能不懂技術,說不清到底想要什么,或無法描述他想要的東西,結果程式員做了一個他覺得不行,再做了一個還是不行,總有新的需求冒出來,程式員累的半死,最后氣的與客戶拍桌子。uj5u.com熱心網友回復:
系結回車事件吧,按回車執行執行操作uj5u.com熱心網友回復:
樓主直接看我那個方案就行,因為我的軟體也是這么用的,沒毛病!uj5u.com熱心網友回復:
在textbox失去焦點事件中處理uj5u.com熱心網友回復:
不可實作 無法完整定義 輸入完整MouseLeave? 恕我愚昧,真的理解不了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/223425.html
標籤:C#
