访问标签创建的按钮单击外部事件

本文关键字:单击 外部 事件 按钮 标签 创建 访问 | 更新日期: 2023-09-27 18:11:34

我对c#和编程都是新手。我试图使一个简单的购物清单应用程序使用windows窗体应用程序和Visual studio。这就是我向列表中添加项目的方法。

    public Form1()
    {
        InitializeComponent();
    }
    int x = 50;
    int y = 58;
    private void addButton_Click(object sender, EventArgs e)
    {
        Label itemName = new Label();
        itemName.Text = itemInput.Text;
        itemInput.Text = "";
        this.Controls.Add(itemName);
        itemName.Location = new Point(x, y);
        itemName.Width = 260;
        CheckBox coupon = new CheckBox();
        coupon.Location = new Point(x - 30, y);
        this.Controls.Add(coupon);
        y = y + 25;
    }

我的主要问题是,我不能有另一个事件改变标签的属性。例:

    public Form1()
    {
        InitializeComponent();
    }
    int x = 50;
    int y = 58;
    private void addButton_Click(object sender, EventArgs e)
    {
        Label itemName = new Label();
        itemName.Text = itemInput.Text;
        itemInput.Text = "";
        this.Controls.Add(itemName);
        itemName.Location = new Point(x, y);
        itemName.Width = 260;
        CheckBox coupon = new CheckBox();
        coupon.Location = new Point(x - 30, y);
        this.Controls.Add(coupon);
        Button deletButton = new Button();
        deletButton.Text = "delete";
        this.Controls.Add(deletButton);
        deletButton.Location = new Point(x + 260, y);
        deletButton.Width = 50;
        y = y + 25;
    }
    private void deletButton_Click(object sender, EventArgs e)
    {
        itemName.Text = "";
    }

上面写着

名称itemName在当前上下文中不存在

是有意义的,因为它在不同的方法中。

我的主要问题是,我可以让itemName在那个方法之外可用吗?还是我完全做错了,不得不从头开始重新设计这个项目?

访问标签创建的按钮单击外部事件

假设您想坚持使用动态添加控件,就像您现在所做的那样,那么一个简单的方法就是给它一个名称,并通过该名称找到它:

// When you're creating it.
itemName.Name = "itemName";
// Finding it.
var itemName = (Label)this.Controls["itemName"];
// Another way to find it.
var itemName = (Label)this.Controls.Find("itemName", true);