如何为程序创建的组合框设置事件方法

本文关键字:设置 事件 方法 组合 程序 创建 | 更新日期: 2023-09-27 18:00:54

我正在创建一个动态创建组合框的小程序。每次用户打开程序时,根据某些上下文,可能有3-30个项目需要4个下拉列表进行选择。我基于以下代码创建这些,这只是一个片段。

    for (int i = 0; i < 4; i++)
        {
            s.Children.Add(new ComboBox()
            {
                VerticalAlignment = VerticalAlignment.Top,
                HorizontalAlignment = HorizontalAlignment.Left,
                Margin = new Thickness(m, -25, 0, 0),
                Width = 75,
                Height = 25,
                FontSize = 12,
                Name = "obj1_" + i.ToString(),
                ItemsSource = objs,
            });
            m = m + 50;
            s.Children.Add(new Label()
            {
                VerticalAlignment = VerticalAlignment.Top,
                HorizontalAlignment = HorizontalAlignment.Left,
                Margin = new Thickness(m, -25, 0, 0),
                Width = 25,
                Height = 25,
                FontSize = 12,
                Name = "lbl1_" + i.ToString(),
            });
         }

s是一个堆栈面板,我也在添加每个组合框。ItemSource来自其他地方的一个小方法,用于确定哪个列表应该进入下拉列表。

我的问题是,如何为这些创建的组合框调用事件?尝试

        private void obj1_1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox this_box = (ComboBox)sender;
            lbl1_1.Content = "!!!";
        }

工作得很好,但标签在当前上下文中不存在。

此外,我创建方框和标签是否是此类场景的最佳方式?

提前谢谢。

如何为程序创建的组合框设置事件方法

循环内部
1( 创建新面板
2( 将标签和组合添加到该面板
3( 将新创建的面板添加到

obj1_1_SelectionChanged事件内部:
1( 查找组合框的父控件
2( 在其子项中搜索标签并更新其文本

解决方案2

创建控件时,创建一个Guid(或int(,并将控件的Tag属性设置为该对象
现在,当你在组合中时,你可以在窗口中搜索具有相同标签的标签

     for (int i = 0; i < 4; i++)
        {
            Guid g = Guid.NewGuid();
            s.Children.Add(new ComboBox()
            {
                Tag = g
            });
            s.Children.Add(new Label()
            {
                Tag = g
            });
        }