我的项目中有三个窗体,我有一个对象类。如何列出可供所有三种表单使用的对象列表?
答案 0 :(得分:5)
您可以创建一个包含对象实例的类:
public class MyClass
{
public static List<string> MyList {get; set}
}
然后您可以从表单
访问它MyClass.MyList = new List<string>();
显然,字符串将替换为对象的名称。
答案 1 :(得分:5)
更改访问修饰符 在Form2中为控件/字段public设置访问修饰符 Form1的任何地方。
Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.textBox1.Text;
使用公共财产/方法。该方法与第一种方法非常相似 在Form2中,类定义了一个属性(或方法)。
在Form2类中定义属性(或方法)
public string Data
{
get
{
return textBox1.Text;
}
}
Form1中的任何地方
Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.Data;
将数据传输到构造函数Form2。 更改构造函数Form2
public Form2(string data)
{
InitializeComponent();
this.data = data;
}
string data;
并在Form1的任何位置创建一个形状,如下所示:
Form2 f = new Form2(this.textBox1.Text);
f.ShowDialog();
发送指向构造函数的链接。 更改构造函数Form2。
public Form2(Form1 f1)
{
InitializeComponent();
string s = f1.textBox1.Text;
}
在Form1的任何位置创建一个形状,以便传递对第一个表单的引用
Form2 f = new Form2(this);
f.ShowDialog();
使用属性“parent”。 创建第二个表单时设置所有者
Form2 f = new Form2();
f.Owner = this;
f.ShowDialog();
在第二个中,我们确定所有者
Form1 main = this.Owner as Form1;
if(main != null)
{
string s = main.textBox1.Text;
main.textBox1.Text = "OK";
}
使用单独的课程。 创建一个单独的类,更好的静态,主要是命名空间,例如在Program.cs文件中
static class Data
{
public static string Value { get; set; }
}
他的公共财产/方法可以从任何形式获得。
Data.Value = "111";
构造函数中的传递方法。 创建委托
public delegate void MyDelegate(string data);
在Form1中,创建一个处理接收数据的方法
void func(string param)
{
//Process
}
创建第二个表单,如下所示:
Form2 f = new Form2(new MyDelegate(GetData));
f.ShowDialog();
更改第二种形式的构造函数以接受委托
MyDelegate d;
public Form2(MyDelegate sender)
{
InitializeComponent();
d= sender;
}
随时发送数据
d(textBox1.Text);
使用委托创建单独的类。 在主命名空间中创建单独的类
public static class Data
{
public delegate void MyEvent(string data);
public static MyEvent EventHandler;
}
在第一种形式中,添加处理程序
void func(string param)
{
MessageBox.Show(param);
}
并初始化EventHandler
Data.EventHandler = new Data.MyEvent(func);
以通常的方式创建第二个表单,然后从
中调用它Data.EventHandler(textBox1.Text);
答案 2 :(得分:1)
这里你创建了一个继承自Form
类的新类(Base类),如下所示:
[System.ComponentModel.DesignerCategory("")]
public class FormBase : System.Windows.Forms.Form
{
public List<string> MyList;
}
之后继承这个类的所有ur形式(3个形式),如下所示:
[System.ComponentModel.DesignerCategory("Form")]
public partial class DeriveClass : FormBase
{
private void Method()
{
base.MyList = new List<string>();
// So something..
}
}