我有一個帶有 50 個組合框的 WPF 應用程式。當我一個月前開始撰寫這個應用程式時,我忘記向所有組合框添加一個 KeyUp 事件......有沒有辦法添加這個事件而不去每個組合框并撰寫 xaml 代碼?
<ComboBox x:Name="Actif_Vent_CB" Grid.Column="1"
SelectionChanged="Actif_Vent_CB_SelectionChanged"
KeyUp="Actif_Vent_CB_KeyUp"/>
private void Actif_Vent_CB_KeyUp(object sender, KeyEventArgs e)
{
switch (e.Key)
{
default:
break;
case Key.Delete:
case Key.Back:
((ComboBox)sender).SelectedIndex = -1;
break;
}
}
用字典??或者是其他東西 ??感謝您的幫助
uj5u.com熱心網友回復:
可以一一遍歷布局,檢查元素是否為 ComboBox 并為其分配事件偵聽器。
在視窗的Loaded事件中呼叫以下方法并將當前視窗作為可視視窗傳遞。
public void SetEventToComboBox(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i )
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
// Do processing of the child visual object.
if (childVisual is ComboBox)
{
((ComboBox)childVisual).KeyUp = Actif_Vent_CB_KeyUp;
}
// Enumerate children of the child visual object.
SetEventToComboBox(childVisual);
}
}
來源: MSDN 檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372431.html
標籤:小白
