【问题标题】:C# Passing a value a new formC# 将值传递给新表单
【发布时间】:2012-05-03 10:35:55
【问题描述】:

当单击按钮时,我得到了 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();

            }
        }

当我运行程序时,它没有显示我设计的表单,而是显示了这个

但是当我把代码改成这样的时候:

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

运行它,它会显示正确的内容,但不会将值传递给第二种形式。

我有办法将值传递给另一个表单吗?

【问题讨论】:

  • 这里有些奇怪。您能否在表单编辑构造函数和 form_load 事件中发布代码。这个循环似乎不太正确。 (您打开相同的表单,为每个选定的项目传递相同的索引)

标签: c# .net visual-studio c#-4.0


【解决方案1】:

添加属性

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

编辑:

您必须定义此属性才能使用它。像这样扩展您的 Edit 类:

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

【讨论】:

  • 我收到此错误“错误 1 ​​不包含 'Value' 的定义并且没有扩展方法 'Value' 接受类型为 'company.Edit' 的第一个参数可以找到”我该怎么办?
【解决方案2】:

只是猜测:在您自己的构造函数中,您忘记调用 IntializeComponents()。

【讨论】:

    【解决方案3】:

    确保您的参数化构造函数的主体中有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);
    

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      相关资源
      最近更新 更多