gpt4 book ai didi

c# - WPF 如何动态创建文本框并在单击按钮时找到文本框?

转载 作者:可可西里 更新时间:2023-11-01 03:06:33 24 4
gpt4 key购买 nike

我正在使用以下代码动态创建一个 TextBox 和一个 Button:

Button btnClickMe = new Button();
btnClickMe.Content = "Click Me";
btnClickMe.Name = "btnClickMe";
btnClickMe.Click += new RoutedEventHandler(this.CallMeClick);

someStackPanel.Childern.Add(btnClickMe);

TextBox txtNumber = new TextBox();
txtNumber.Name = "txtNumber";
txtNumber.Text = "1776";

someStackPanel.Childern.Add(txtNumber);

我将点击事件连接到 Click Me 按钮。单击我按钮甚至被正确触发。但是我找不到我动态输入的TextBox

这是我的点击事件:

protected void ClickMeClick(object sender, RoutedEventArgs e)
{
// Find the phone number
TextBox txtNumber = this.someStackPanel.FindName("txtNumber") as TextBox;

if (txtNumber != null)
{
string message = string.Format("The number is {0}", txtNumber.Text);

MessageBox.Show(message);
}
else
{
MessageBox.Show("Textbox is null");
}
}

如何找到 TextBox txtNumber

最佳答案

Josh G 找到了修复此代码的线索:使用 RegisterName()。

这里有三个好处:

  1. 不使用成员变量来保存对动态创建的 TextBox 的引用。
  2. 编译。
  3. 完整代码。

    using System;
    using System.Windows;
    using System.Windows.Controls;

    namespace AddControlsDynamically
    {
    public partial class Window1 : Window
    {
    public void Window_Loaded(object sender, RoutedEventArgs e)
    {
    GenerateControls();
    }
    public void GenerateControls()
    {
    Button btnClickMe = new Button();
    btnClickMe.Content = "Click Me";
    btnClickMe.Name = "btnClickMe";
    btnClickMe.Click += new RoutedEventHandler(this.CallMeClick);
    someStackPanel.Children.Add(btnClickMe);
    TextBox txtNumber = new TextBox();
    txtNumber.Name = "txtNumber";
    txtNumber.Text = "1776";
    someStackPanel.Children.Add(txtNumber);
    someStackPanel.RegisterName(txtNumber.Name, txtNumber);
    }
    protected void CallMeClick(object sender, RoutedEventArgs e)
    {
    TextBox txtNumber = (TextBox) this.someStackPanel.FindName("txtNumber");
    string message = string.Format("The number is {0}", txtNumber.Text);
    MessageBox.Show(message);
    }
    }
    }

关于c# - WPF 如何动态创建文本框并在单击按钮时找到文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com