在窗体之间传递组合框值
本文关键字:组合 窗体 之间 | 更新日期: 2023-09-27 17:56:00
相当简单的问题我知道这很简单,我做错了,但我需要另一双眼睛来帮助我。我有 2 个表单/类,我想将 combobox.selectedtext 从表单传递到 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;
}
}
您只需要从要从另一个表单调用的不同表单传递引用。或者,根据应用程序的工作方式,您可以保留所创建表单的引用。这样,您就可以根据依赖项的实际情况向任何方向调用。
表单 1中的示例 1:(表单 2 是表单 1 的成员)
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 种形式,您需要绘制图纸并草图每种形式如何依赖于其他形式。然后创建反映此绘图的代码。
顺便说一句,您还可以使用表单的事件,以不同的形式,它本身不必以事件发起的形式发生。
另一个不理想的解决方案可能是将frm2string
更改为由Form2
在Page_Load
(或可能更早)设置的public static
变量。
公共静态变量是不理想的,因为它们充当全局变量。
将值从 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.
}
}