[英]passing combobox values between forms
非常简单的问题,我知道这很简单,我做错了,但是我需要另一只眼睛来帮助我。 我有2个表单/类,我想将combobox.selectedtext从form传递到form2中的字符串。
public partial class Form1
{
public Form1()
{
InitializeComponent();
}
private void cboBox2_EditValueChanged_1(object sender, EventArgs e)
{
string cat = cboBox1.SelectedText;
Form2 fm2 = new Form2();
fm2.frm2string = cat;
}
}
public partial class Form2
{
public Form2()
{
InitializeComponent();
}
public string frm2string
{
get;
set;
}
private void simpleButton1_Click(object sender, EventArgs e)
{
textEdit1.Text = frm2string;
}
}
表格3与表格1同时初始化。
public partial class Form3
{
public Form3()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
}
}
Form0加载Form1和Form3
public partial class Form0
{
public Form0()
{
InitializeComponent();
}
private void Form0_Load(object sender, EventArgs e)
{
form1 = new Form1();
form1.TopLevel = false;
tabdrives.Controls.Add(form1);
form1.Show();
form1.Dock = DockStyle.Fill;
form3 = new Form3();
form3.TopLevel = false;
tabdrives.Controls.Add(form3);
form3.Show();
form3.Dock = DockStyle.Fill;
}
}
另一个不理想的解决方案可能是将frm2string
更改frm2string
Form2
在Page_Load
(或可能更早)上设置的public static
变量。
公共静态变量是非理想的,因为它们充当全局变量。
您只需要传递要从另一个表单调用的不同表单的引用。 或者,根据应用程序的工作方式,保留您创建的表单的引用。 这样,您可以根据依赖关系的实际情况在任何方向调用。
form1中的示例1:(form2是form1的成员)
class Form1{
private Form2 form2;
void someMethod(){
form2 = new Form2();
}
void someOtherMethod(){
if (form2!=null) form2.doSomething();
}
}
例子2:
class Form1{
void someMethod(){
form2 = new Form2(this);
}
}
class Form2{
private Form1 form1;
public Form2(Form1 form1){
this.form1 = form1;
}
void someOtherMethodAgain(){
form1.doSomething();
}
}
这段代码仅专注于将表单的引用相互传递,还远远不够完整。 根据情况,您需要示例1,示例2或两者的组合,甚至完全不同。 但是,您需要以某种方式知道依赖性并将它们传递给正确的形式。
例如,当您创建form3时,可以轻松地传递form1。 但是您已经有4种形式,您需要绘制图纸并草绘每种形式如何依赖其他形式。 然后,创建反映此绘图的代码。
顺便说一句,您还可以使用某种形式的事件,以另一种形式,它本身不必在事件起源的形式中发生。
将值从form1传递到form2构造函数,如下所示。
形式1:
public partial class Form1
{
public Form1()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
form2 f2 = new form2(cboBox1.SelectedText);
}
}
形式2:
public partial class Form2
{
string ComboBoxSelectTexForm1;
public Form2(string value)
{
InitializeComponent();
ComboBoxSelectTexForm1 = value; //now you can assign this value anywhere you want.
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.