首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何访问代码生成的子元素?

如何访问代码生成的子元素?
EN

Stack Overflow用户
提问于 2014-05-25 23:29:45
回答 1查看 85关注 0票数 0

我习惯于使用web语言中的DOM,访问子元素相当简单。即使没有指定的ID,JavaScript也可以获得当前单击的元素并更改子元素的属性。如何在C#中实现类似的行为?

下面是一些以编程方式生成元素的示例代码:

代码语言:javascript
运行
复制
public MainWindow()
{
    InitializeComponent();

    //create a StackPanel
    StackPanel myStackPanel = new StackPanel();
    myStackPanel.Margin = new Thickness(20);
    myStackPanel.Orientation = Orientation.Horizontal;

    //add stackpanel to MainWindow
    this.AddChild(myStackPanel);
    this.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;

    //create an array to loop generated items
    int[] myArray = { 1, 2, 3, 4, 5, 6 };

    foreach (int number in myArray)
    {
        //create a border to hold a label
        Border myBorder = new Border();
        myBorder.Width = myBorder.Height = 100;
        myBorder.Background = Brushes.RoyalBlue;
        myBorder.Margin = new Thickness(5);

        //create the label
        Label myLabel = new Label();
        myLabel.Foreground = Brushes.White;
        myLabel.FontSize = 14;
        myLabel.Content = number;
        myLabel.VerticalAlignment = System.Windows.VerticalAlignment.Center;
        myLabel.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;

        //add label to myBorder
        myBorder.Child = myLabel;

        //add myBorder to myStackPanel
        myStackPanel.Children.Add(myBorder);

        myBorder.MouseDown += new MouseButtonEventHandler(myStackPanel_MouseDown);
    }
}

private void myStackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
    //add code to get child label and set font to bold
}

我想访问单击的myLabel的子元素myBorder。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 00:26:06

您需要将发送方转换为边框元素并检索子元素。即:

代码语言:javascript
运行
复制
private void myStackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
    StackPanel myPanel = sender as StackPanel;
    Label myLabel;
    foreach(object o in myPanel.Children)
    {
        if (child is Label)
        {
            myLabel = o as Label;
            //do something with label
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23860904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档