如何查找添加按钮的源对象
本文关键字:按钮 对象 添加 何查找 查找 | 更新日期: 2023-09-27 18:31:31
我已将按钮动态添加到列表框中。我正在使用该按钮,我必须知道该按钮的位置。
我有这个方法:
private void addNewButton_Click(object sender, RoutedEventArgs e)
{
if(sender.GetType().IsSubclassOf(typeof(Control)))
{
Control formControl = (Control)sender;
switch (formControl.Name)
{
case "addSound20":
case "addSound21":
case "addSound23":
case "addSound24":
case "addSound25":
case "addSound26":
MessageBox.Show("test: " + formControl.Name);
// there I need to know, where is this button located
break;
default:
MessageBox.Show("exception: default");
break;
}
}
}
如何找到按钮的源对象?
编辑:我在主窗口中有一些列表框 - 我需要知道,哪个列表框包含我正在使用的按钮。每个对象都有特定的名称 - 例如"button20"、"listBox22"等。
从您上一条评论来看,您可以投射和使用Parent
((ListBox)formControl.Parent).Items.Remove(formControl);
注意:父级可以返回空值,您可能希望检查一下
formControl.Parent != null && formControl.Parent is ListBox
您可以使用 VisualTreeHelper 查找任何控件的父控件...以下方法可以帮助您..
public static T FindAncestor(DependencyObject dependencyObject)
where T : DependencyObject
{
var parent = VisualTreeHelper.GetParent(dependencyObject);
if (parent == null) return null;
var parentT = parent as T;
return parentT ?? FindAncestor(parent);
}
您可以像LisBox lisbox = FindAncestor(formControl);