假設我有兩個文本框,一個保存二進制數據,另一個保存ASCII碼。如果用戶讓我們說改變他們其中之一,我將如何在不需要按下按鈕的情況下同時更新其他文本框?C#同時更新兩個文本框?
回答
你必須防止無限循環(asciiTextBox
改變binaryTextBox.Text
從而改變asciiTextBox.Text
等),並且可以實現類似的東西:
private void asciiTextBox_TextChanged(object sender, EventArgs e) {
binaryTextBox.TextChanged -= binaryTextBox_TextChanged;
try {
binaryTextBox.Text = BinaryText(asciiTextBox.Text);
}
finally {
binaryTextBox.TextChanged += binaryTextBox_TextChanged;
}
}
private void binaryTextBox_TextChanged(object sender, EventArgs e) {
asciiTextBox.TextChanged -= asciiTextBox_TextChanged;
try {
asciiTextBox.Text = AsciiText(binaryTextBox.Text);
}
finally {
asciiTextBox.TextChanged += asciiTextBox_TextChanged;
}
}
您正在使用TextChanged
事件。當用戶在一個文本框中鍵入時,您在TextChanged
處理程序中處理它。
,以避免無限循環,可以從TextChange
事件在開始退訂,並在處理程序結束時再次訂閱:
private void TextChangedHandler(object sender, EventArgs e)
{
textbox1.TextChanged -= TextChangedHandler;
textbox2.TextChanged -= TextChangedHandler;
// set textbox values
textbox1.TextChanged += TextChangedHandler;
textbox2.TextChanged += TextChangedHandler;
}
textchanged在這兩個文本框中將創建一個無限循環:我不是下來的選民 –
我編輯了我的答案,謝謝@ un-lucky –
@Roma當您使用兩個TextBox控件的TextChanged事件時沒有無限循環以同步它們的文本。 'Text'屬性檢查,如果新值與之前的值相同,則不會引發'TextChanged'事件。 –
使用TextChanged Event
檢查這個link查看詳細
代碼
private void TextBox_TextChanged(object sender, EventArgs e)
{
// update your target text bx over here
}
創建
TextChanged Event
只爲兩個一箱箱將 創造無限的循環
當您使用兩個「TextBox」控件的「TextChanged」事件來同步它們的文本時,沒有無限循環。 'Text'屬性檢查,如果新值與之前的值相同,則不會引發'TextChanged'事件。 –
當然,您不需要取消註冊TextChanged
事件並重新註冊!
當您使用兩個TextBox
控件的TextChanged
事件來同步它們的文本時,沒有無限循環。 Text
屬性檢查,如果新值與以前的值相同,則不會引發TextChanged
事件。
所以你不需要刪除處理程序。只需處理TextChanged
事件並更新其他控件。
在下面的例子中,我有2 TextBox
控制可以鍵入在兩個和反向串將被顯示在其它:使用上述圖案
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.textBox2.Text = new string(this.textBox1.Text.Reverse().ToArray());
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
this.textBox1.Text = new string(this.textBox2.Text.Reverse().ToArray());
}
可以簡單地使用您的MakeBinary
和MakeAscci
方法。你應該只有可逆的方法。
- 1. 兩個文本框同步更新
- 2. 同時輸入兩個文本框
- 3. 更新文本框C#
- 4. 同時更新兩個UILabel
- 5. 同時更新兩個動態文本字段
- 6. C#在更新文本框時無法看到文本
- 7. 同時在兩個文本框中突出顯示文本
- 8. Mysql更新多個文本框並同時上傳多個文件
- 9. 更新文本框
- 10. C#文本框無法更新
- 11. c#wpf MVVM文本框更新
- 12. 在codeigniter中同時更新兩個表
- 13. 如何同時更新兩個字典
- 14. PHP同時更新兩個表
- 15. 兩個在同一時間UI更新
- 16. 同時更新兩個表格
- 17. 更新表中兩個字段同時
- 18. 同時更新兩個數據庫
- 19. 同時更新兩個模型(Laravel 4.2)
- 20. C#文本框控件不用新文本更新
- 21. C#中的組合框 - 在選擇其中一個項目時同時更新兩個框
- 22. 驗證兩個文本框(C#)
- 23. 驗證兩個文本框(C#)
- 24. 使用AJAX刷新兩個不同的文本框
- 25. 同時更新多個圖片框
- 26. 文本框綁定到兩個LostFoucus和屬性更新
- 27. 如何在使用兩個單獨更新的同時更新兩個表?
- 28. WPF沒有更新的文本框,同時在建
- 29. Jquery - 使用另一個文本框的值在運行時更新文本框
- 30. C#綁定文本框不會更新使用tableadapter更新
使用textchanged事件詳細檢查此鏈接https://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged(v=vs.110).aspx – rashfmnb
看看textchange事件你需要小心,以確保你沒有發現自己在一個循環中改變一個COS另一個說它改變了,但它改變了COS你改變它 – BugFinder
在兩個文本框中的'textchanged'將創建一個無限循環 –