我有一個由複選框組成的用戶控件。我在窗體上有4個這些用戶控件。當用戶單擊用戶控件中的任何一個複選框時,我希望其他用戶控件確保它們未被檢查。類似於單選按鈕的工作方式,除了我需要使用複選框和事件。幾個用戶控件如何響應c#中其中一個控件發生的事件?
0
A
回答
3
一個簡單的方法可以是使用單一方法的CheckBox
ES的所有事件,並利用這種方式sender
對象:
List<CheckBox> listCheckBoxes;
checkBox1.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
checkBox2.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
checkBox3.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
checkBox4.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
listCheckBoxes = this.Controls.OfType<CheckBox>().ToList();
void checkBox_CheckedChanged(object sender, EventArgs e){
CheckBox checkBox = (CheckBox)sender;
if(checkBox.Checked){
foreach(CheckBox c in listCheckBoxes){
if(c.Checked && c != checkBox)
c.Checked = false;
}
}
}
1
事件處理程序通常是表單(或自定義容器)的一種方法。您通常知道該級別的其他控件。如果您試圖在自定義控件上執行該事件處理程序,則會遇到問題,因爲您會將控件綁定到其他控件。
這將是一個更好的設計,有一些容器控件,有一個事件處理程序來執行此邏輯。該事件處理程序將被添加到每個複選框的Click
事件中。
1
總結控件在一個UserControl
。當一個事件觸發一個CheckBox
控件時,會爲其餘的CheckBox
控件引發一般切換事件。
0
OK ,如果我假設是正確的。你有一個表單中的4個用戶控件,並且他們需要在某些事件中相互通信(在你的情況下,它是由用戶控件之一中的複選框引起的事件)
我會實現訂閱者/發佈者模型。
在UsercontrolA(發佈者) 1)在複選框,單擊提升一個事件,如果需要,將其轉發給轉發給一個共同的事件功能
Page類,將訂閱UsercontrolA的事件,用戶控件B(用戶)
有關詳細信息,請參閱本 http://www.codeproject.com/Articles/15550/How-to-invoke-events-across-User-Controls-in-ASP-N
相關問題
- 1. 在另一個用戶控件的用戶控件中引發事件
- 2. 如何在另一個用戶控件中發生事件時更新用戶控件?
- 3. Winform - 這是一個用戶控件最後發生的事件
- 4. 如何從其中一個事件引用控件?
- 5. C#,用戶控件,事件 - 用戶控件的控件事件覆蓋?
- 6. 用戶控件中的用戶控件wpf無響應
- 7. 如何在一個控件中多次使用用戶控件
- 8. 觸發另一個控件的事件
- 9. 響應數據綁定用戶控件中的WPF Click事件
- 10. 如何使用c#訪問一個用戶控件到另一個控件?
- 11. 從另一個用戶控件打開c#用戶控件
- 12. 響應的OnClick一個用戶控件內一個GridView
- 13. 如何控制以允許用戶控件事件觸發的方式加載哪個用戶控件
- 14. 在另一個用戶控件中移動用戶控件
- 15. 在用戶控件的加載事件中,WPF中的其他用戶控件的控件爲null
- 16. 如何使用其他用戶控件事件刷新用戶控件網格
- 17. 當另一個用戶控件中的屬性依賴性發生變化時觸發一個事件
- 18. 如何在VB.NET中的Web用戶控件上引發事件
- 19. 如何從WPF中的用戶控件引發父事件?
- 20. Web用戶控件在另一個用戶控件上調用事件
- 21. 如何在另一個用戶控件中使用asp.net用戶控件?
- 22. 在另一個控件的事件中訪問其他xaml控件數據
- 23. 如何確定哪個控件觸發了一個事件?
- 24. 如何將一個用戶控件放入另一個用戶控件
- 25. 如何從一個用戶控件導航到另一個用戶控件
- 26. 在asp.net中使用另一個用戶控件中的一個用戶控件的問題C#
- 27. 如何遍歷用戶控件中的控件以找到某個控件?
- 28. 如何在所謂的事件中找到哪個控件引發了一個事件? Visual C#
- 29. 觸發一個事件與多個控件的一個子
- 30. 用VS2010中的自定義控件代替幾個winforms控件
爲什麼需要改用單選按鈕的複選框? – 2013-02-12 19:10:08
@zespri - 一旦選擇(意外),您便無法取消選擇單選按鈕。某些用戶可能不想選擇任何選項。 – Win 2013-02-12 19:29:48
這通常通過添加第5個單選按鈕「以上都不是」來解決 – 2013-02-12 19:33:49