【发布时间】:2014-11-24 15:27:12
【问题描述】:
我有一个 C# windows 应用程序,它有两个窗体 Form1 和 Form2。 Form1 上有一个组合框,Form2 上有一个文本框。
我想把Form1.ComboBox1中选中的值放到Form2.TextBox1中。
我正在尝试这个:
Form1 Form1Object = new Form1();
string fff = Form1Object.ComboBox1.SelectedItem.ToString(); //not working
TextBox1.Text = fff;
问题是,当我运行此 Form1 时,它会重新初始化,我不希望这样。 (当应用程序启动时,我有一个启动画面,所以当我运行我的代码时,启动画面会重新开始。
有没有办法在不重新启动第一个表单的情况下读取 ComboBox1 的值? 如果我直接尝试它不起作用,它会将 Form1 视为 cals 而不是 object。
Form1.ComboBox1.SelectedItem.ToString(); //does not work
我还尝试在打开第二个表单时将值添加到文本框:
Form2 form2 = new Form2();
form2.TextBox1.Text = ComboBox1.SelectedValue.ToString();
form2.Show();
这给了我以下错误:“对象引用未设置为对象的瞬间。”
编辑: 它使用以下代码工作:
Form2 form2 = new Form2();
form2.TextBox1.Text = ComboBox1.Text;
form2.Show();
现在我的问题仍然存在:如果我在 Form2 中,我还能从 form1 中获取值吗?如果没有,那没关系。我会将其发布为解决方案。
【问题讨论】:
-
只要你在 Form1-class 中,你就可以使用当前实例的 this 引用。因此,您可以重复使用相同的实例。
-
您可以使用事件。 Here is an example。但在您的情况下,在示例中使用组合框选定项目更改事件而不是 textBox1_TextChanged。
-
"对象引用未设置为对象的瞬间。"表示您的 ComboBox 中的 SelectedValue 为空。抛出此异常时,调试并检查组合框的 SelectedValue、SelectedItem 和 SelectedIndex 属性中的内容。
-
看起来它可以使用 Form1 中的 ComboBox1.Text,但不能使用 SelectedValue。
-
真的不是混蛋,而是.....
I have a splash screen that runt when the application starts。那条线让我很开心。