C#传递值到新表单

5

我有一个 Windows 表单,尝试在按钮点击时将值从该表单传递到新表单。使用以下代码:

private void Edit_button_Click(object sender, EventArgs e)
        {
             for (int i = 0; i < listBox1.SelectedItems.Count; i++)
            {

             Edit item = new Edit(int.Parse(listBox1.SelectedIndex.ToString()));
            item.ShowDialog();

            }
        }

当我运行程序时,它不显示我设计的表单,而是显示下面的内容: problem 但是,当我将代码更改为以下内容时:
 Edit item = new Edit();
   item.ShowDialog();

运行它,它显示正确的东西,但不会向第二个表单传递值。 enter image description here

有没有办法将一个值传递到另一个表单中?


这里有些奇怪。你能发布一下你的表单Edit构造函数和form_load事件中的代码吗?那个循环似乎不太对。(你打开了同一个表单,并为每个选定的项传递相同的索引) - Steve
3个回答

7

添加一个属性

Edit item = new Edit();
item.Value = 5;
item.ShowDialog();

编辑:

您必须定义此属性才能使用它。将您的 Edit 类扩展为如下形式:

class Edit {
    ...
    public int Value { get; set; }
    ...
}

我遇到了这个错误:“Error 1 does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'company.Edit' could be found”,我该怎么办? - UnknownUser

1

请确保您的参数化构造函数在其主体中具有InitiaizeComponent()。 正如此函数名称所指定的那样,它会初始化表单的组件,包括公司标签、文本框和按钮。

我来告诉你如何做。

创建一个编辑表单的参数化构造函数。将该值传递到变量中。

public class Edit
{
    public int val = 0;

    public Edit()
    { 
        InitializeComponent();
    }

    public Edit(int a)
    {
        val = a; 
        InitializeComponent();
    }

    public void Edit_Load()
    {
      txtbox.Text = val.ToString();
    }
}

并且从第一个表单调用编辑功能,如下:

Edit item = new Edit(5);

1
猜测一下:在你自己的构造函数中,你可能忘记调用InitializeComponents()了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接