获取组合框选定值Form1到另一个Form2
我有一个C#windows应用程序有两个窗体Form1,它是主窗体和Form2。 Form1上有一个组合框,Form2有一个文本框。获取组合框选定值Form1到另一个Form2
我想将Form1.ComboBox1中选定的值放入Form2.TextBox1中。
我想这一点:
Form1 Form1Object = new Form1();
string fff = Form1Object.ComboBox1.SelectedItem.ToString(); //not working
TextBox1.Text = fff;
问题是,当我运行此Form 1被重新初始化,我不希望出现这种情况。 (我有一个闪屏是侏儒在应用程序启动时,所以,当我跑我的代码的启动画面又重新开始。
有没有一种方法,无需重新启动的第一个表单阅读ComboBox1价值? 如果我直接尝试它不工作,它认为在Form1作为CALSS,而不是对象
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();
现在我的问题仍然存在:如果我在窗体2我还可以得到form1的价值?如果没有,那没关系。我会将其作为解决方案发布。
这种类型的问题已被询问和回答很多次,并在不同的版本。
我建议在看一些我已经张贴在过去下列...
This example显示了第二种形式作为参数的第一种形式的情况下通过两种形式。然后,从第一个公开的方法中,第二个可以调用它们来获取值。如果你想允许设置替代来源,或者只是允许获取方法,你可以自行决定......可以作为公众获得的财产完成;保护组;
This * search将显示几个链接,我已经在过去完成的帖子与不同形式之间略有变化的版本。
反馈COMMENT
必须有东西在你的第一个形式来调用第二完成..是它从一个点击按钮,或根据实际组合框的选择被改变。不管它是什么,我提供的第一个例子应该是你所需要的。你没有第二种形式打电话给第一个。
没有第一例的完整拷贝\粘贴,所有你需要真的在形式2的构造函数设置文本从第一拉...
public Form2(Form1 viaParameters) : this()
{
this.textBox1.Text = viaParameters.Combobox1.SelectedItem;
}
不过,我不知道你的项目是如何定义的.. dictionary,list,array,whatever ..所以你可能需要通过强制转换
if(viaParameters.Combobox1.SelectedIndex > -1)
this.textBox1.Text = viaParameters.Combobox1.Items[ viaParameters.Combobox1.SelectedIndex ].WhateverStringValue;
获得所选择的项目这种方式,形式2的形式,从1开始可以直接抢值。
如果从通过属性或方法的第一种形式公开方法,你的文字值可以是这么简单
this.textBox1.Text = viaParameters.YourForm1sMethodToGetStringFromCombobox();
虽然这不是最恰当的答案,这是解决方法之一问题。
Form1中
添加一个方法来获得价值
public string TransmitSelectedValue()
{
return ComboBox1.SelectedItem.ToString();
}
窗体2
var myvalue = ((Form1)ParentForm.Controls.Find(Form1Name,true)).TransmitSelectedValue();
这不起作用。 Form1Name是我的应用程序中的Form1,当我在代码中将Form1Name替换为Form1时,我得到错误。 – Danut 2014-11-25 10:28:54
您创建Form1的实例的名称是“Form1”? – DidIReallyWriteThat 2014-11-25 13:23:38
是的。我保持原样。它是应用程序的默认形式。应用程序启动时启动的那个。 – Danut 2014-11-25 13:42:03
我不知道问题出在哪里
同时启动/打开窗口2
像
Form2 f2 = new Form2();
f2.Show(this);
你必须到Form1为“主人”的引用在窗口2
你可以把这个你想要的任何事件或按钮或任何
Form1 f1 = Owner as Form1;
textBox1.Text = f1.comboBox1.SelectedItem.ToString();
转化为C#...
只要your're“在”你的Form1-class中,你可以对当前实例使用this引用。因此你可以重用同一个实例。 – HimBromBeere 2014-11-24 15:36:48
您可以使用事件。 [这里是一个例子](http://*.com/a/6382869/754438)。但在你的情况使用组合框选择项目改变事件,而不是textBox1_TextChanged在例子中。 – Reniuz 2014-11-24 15:39:53
“对象引用未设置为对象的瞬间。”意味着ComboBox中的SelectedValue为null。在引发此异常时,调试并检查组合框的SelectedValue,SelectedItem和SelectedIndex属性中的内容。 – Arie 2014-11-24 15:45:16