【发布时间】:2016-12-24 03:18:15
【问题描述】:
我有三个ListBoxes 和三个“清除”buttons,这三个Listboxes 各有一个。现在,我将所有“清除”buttons 链接到同一个点击功能。在该函数中,我使用switch 来确定要清除哪个ListBox。我想知道是否有办法摆脱switch 语句并将其替换为一行代码,以确定要清除哪个ListBox。我需要将每个button 与相应的ListBox 链接起来的东西。我弄乱了Buttons 的Tag 属性,但没有运气。
这是当前的代码:
Xaml(ClearBtn1 清除 lb1 等):
<Button Name="ClearBtn1"
Click="ClearBtn_Click"
Content="Clear" />
<Button Name="ClearBtn2"
Click="ClearBtn_Click"
Content="Clear" />
<Button Name="ClearBtn3"
Click="ClearBtn_Click"
Content="Clear" />
<ListBox Name="lb1" />
<ListBox Name="lb2" />
<ListBox Name="lb3" />
后面的代码:
private void ClearBtn_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
string name = btn.Name; //Gets the button name which corresponds to a certain listbox
switch (name)
{
case "ClearBtn1":
{ ClearListBox(lb1); return; }
case "ClearBtn2":
{ ClearListBox(lb2); return;}
case "ClearBtn3":
{ ClearListBox(lb3); return; }
}
}
public void ClearListBox(ListBox listbox)
{
listbox.Items.Clear();
}
使用Tag 我正在尝试类似:
<Button Name="ClearBtn1"
Click="ClearBtn_Click"
Content="Clear"
Tag="lb1" />
private void ClearBtn_Click(object sender, Rout
{
Button btn = (Button)sender;
string name = btn.Name;
ClearListBox(btn.Tag); //doesn't work
}
这不起作用,因为我无法将 string 转换为 ListBox。
【问题讨论】: