【问题标题】:wpf Finding a button from wrap panelwpf 从包装面板中查找按钮
【发布时间】:2023-03-04 02:15:01
【问题描述】:

我在WrapPanel 中有Buttons,它们是动态创建的。我想在Click_event 上更改特定Button 的高度/宽度。

这是我正在做的事情:

    for (int i = 1; i <= count; i++)
    {
                btn = new Button();
                btn.MinHeight = 22;
                btn.MinWidth = 22;

                btn.Content = i.ToString();
                int _id = id++;
                btn.Name = "btn"+_id.ToString();
                wrpQuestionsMap.Children.Add(btn);

                btn.Click += new RoutedEventHandler(btn_Click);
    }

    private void btnNext_Click_1(object sender, RoutedEventArgs e)
        {
            if (this.view.CurrentPosition < this.view.Count - 1)
            {
                this.view.MoveCurrentToNext();

                Button b = (Button)this.wrpQuestionsMap.FindName("btn"+view.CurrentPosition.ToString());
                if (b != null)
                {
                    b.Width = 30;
                }
            }
        }

我在上面尝试过,但它变得空了,不知道为什么。 请帮忙 谢谢

【问题讨论】:

    标签: c# wpf button mouseevent wrappanel


    【解决方案1】:

    如果我理解正确并且您想更改点击按钮的大小: 对于这行代码:

    btn.Click += new RoutedEventHandler(btn_Click);
    

    你应该有这样的方法:

    void btn_Click(object sender, RoutedEventArgs e)
    {
      Button btn=(Button)sender; // this is the clicked Button
      btn.Width=30.0;            //changes its Width
    }
    

    编辑:

    foreach (Button btn in wrpQuestionsMap.Children)
    {
        string name= btn.Content.ToString();
        if  (name == "yourName")   // yourName is the name you are searching for
        {
             btn.Width = 30.0   //change size
             break;             // no need to search more
        }
    }
    

    编辑 2: 从您问题中的代码来看,您的按钮内容似乎是一个数字btn.Content = i.ToString();。您在评论中说view.CurrentPosition.ToString() 是您当前问题的编号。如果要更改此按钮的宽度,请使用:

    foreach (Button btn in wrpQuestionsMap.Children)
    {
        string name= btn.Content.ToString(); // it must be a number, check it in the debug, and if it is not, Let me know
        if  (name == view.CurrentPosition.ToString())
        {
             btn.Width = 30.0   //change size
             break;             // no need to search more
        }
    }
    

    如果你想改变另一个按钮的宽度,你应该让我知道那个按钮上写了什么。

    【讨论】:

    • 请先检查here 我的应用程序的屏幕截图。
      在此应用程序中,用户从左侧选择一个主题以生成该主题的在线测试。
      选择主题后,我在右侧动态添加按钮。
      我想更改右侧按钮的按钮高度/宽度,哪个没有。问题目前在屏幕上。就是这样。
    • @Deepak 请您再解释一下最后一句(我想更改...)吗?
    • 假设用户在第 5 号。问题,在这种情况下按钮的宽度。 5 应该在应用程序的快速视图部分更改,所有按钮都在快速视图中的 Wrap Panel 中。
    • 这段代码改变了每个按钮的宽度
      我已经完成了这个
      ' foreach (Button btn in wrpQuestionsMap.Children) { string name= btn.Content.ToString(); if (name == view.CurrentPosition.ToString()) { btn.Width = 30.0;休息; } }'
    • 使用if (name == "btn" + view.CurrentPosition.ToString())。如果你失败了,那么回答:view.CurrentPosition 是什么?是当前问题的编号吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多