The*_*nan 0 c# windows-forms-designer visual-studio-2012
我的项目中有三个窗体,我有一个对象类.如何列出可供所有三种表单使用的对象列表?
您可以创建一个包含对象实例的类:
public class MyClass
{
public static List<string> MyList {get; set}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从表单中访问它
MyClass.MyList = new List<string>();
Run Code Online (Sandbox Code Playgroud)
显然字符串将被替换为对象的名称.
更改访问修饰符在Form2中为控件/字段public Anywhere Form1设置访问修饰符.
Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.textBox1.Text;
Run Code Online (Sandbox Code Playgroud)
使用公共财产/方法.该方法非常类似于第一个在Form2类中定义的属性(或方法).
在Form2类中定义一个属性(或方法)
public string Data
{
get
{
return textBox1.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
Form1中的任何位置
Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.Data;
Run Code Online (Sandbox Code Playgroud)
数据传输到构造函数Form2.更改构造函数Form2
public Form2(string data)
{
InitializeComponent();
this.data = data;
}
string data;
Run Code Online (Sandbox Code Playgroud)
并在Form1的任何位置创建一个形状如下:
Form2 f = new Form2(this.textBox1.Text);
f.ShowDialog();
Run Code Online (Sandbox Code Playgroud)发送构造函数的链接.更改构造函数Form2.
public Form2(Form1 f1)
{
InitializeComponent();
string s = f1.textBox1.Text;
}
Run Code Online (Sandbox Code Playgroud)
并在Form1的任何位置创建一个形状,以便将其传递给第一个表单
Form2 f = new Form2(this);
f.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
使用属性"parent".创建第二个表单时设置所有者
Form2 f = new Form2();
f.Owner = this;
f.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
在第二个,我们确定所有者
Form1 main = this.Owner as Form1;
if(main != null)
{
string s = main.textBox1.Text;
main.textBox1.Text = "OK";
}
Run Code Online (Sandbox Code Playgroud)
使用单独的课程.创建一个单独的类,更好的静态,主要是命名空间,例如在Program.cs文件中
static class Data
{
public static string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
他的公共财产/方法可以从任何形式获得.
Data.Value = "111";
Run Code Online (Sandbox Code Playgroud)
构造函数中的传递方法.创建委托
public delegate void MyDelegate(string data);
Run Code Online (Sandbox Code Playgroud)
在Form 1中,创建一个将处理接收数据的方法
void func(string param)
{
//Process
}
Run Code Online (Sandbox Code Playgroud)
创建第二个表单如下:
Form2 f = new Form2(new MyDelegate(GetData));
f.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
更改第二个表单的构造函数以接受委托
MyDelegate d;
public Form2(MyDelegate sender)
{
InitializeComponent();
d= sender;
}
Run Code Online (Sandbox Code Playgroud)
并随时发送数据
d(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)使用委托创建单独的类.在主命名空间中创建单独的类
public static class Data
{
public delegate void MyEvent(string data);
public static MyEvent EventHandler;
}
Run Code Online (Sandbox Code Playgroud)
在第一种形式中,添加一个处理程序
void func(string param)
{
MessageBox.Show(param);
}
Run Code Online (Sandbox Code Playgroud)
并初始化EventHandler
Data.EventHandler = new Data.MyEvent(func);
Run Code Online (Sandbox Code Playgroud)
以通常的方式创建第二个表单,然后从中调用它
Data.EventHandler(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5725 次 |
| 最近记录: |