您的位置:首页 > 其它

WinForm中窗体中的页面传值

2010-11-24 12:41 197 查看
A.WinForm


窗体显示



显示窗体可以有以下
2

种方法:

Form.ShowDialog

方法

(窗体显示为模式窗体)

Form.Show




(窗体显示为无模式窗体)

2

者具体区别如下:

1.

在调用
Form.Show

方法后
,Show

方法后面的代码会立即执行

2.

在调用
Form.ShowDialog

方法后
,

直到关闭对话框后,才执行此方法后面的代码

3.

当窗体显示为模
式窗体时,单击
"

关闭
"

按钮会隐藏窗体,并将
DialogResult

属性设置为
DialogResult.Cancel

与无模式窗体不同,当用户单击对
话框的关闭窗体按钮或设置
DialogResult

属性的
值时
,

不调用窗体的
Close

方法

实际上是把窗体的
Visible

属性赋值为
false,

隐藏窗体了

这样隐藏的窗体是可以重新显示,
而不用创建该对话框的新实例

因为未关闭窗体
,

所以在应用程序不再需要该窗体时
,

请调用该窗体的
Dispose

方法

怎么判断一个窗体是模式窗体呢?

利用
Form.Modal

属性
,

如果该窗体是模式显示,则为
true,

否则为
false

根据通过
Show


ShowDialog

而显示出来的窗体的
Modal

属性分别对应
false


true

特别注意:

由于在窗体创建之前是无法得知显
示方式的
,

所以在窗体构造函数中
,Modal

属性总是对应
false,

所以我们只能在
Load

事件中或者之后利用
Modal

属性值

怎么确定窗体间的所有者关系
?

Form

类的
Owner

属性
:

窗体的所有者

当一个窗体归另一窗体所有时,它
便随着所有者窗体最小化和关闭。

例如,如果
Form2

归窗体
Form1

所有,则关闭或最小化
Form1

时,
Form2

也会关闭或最小化。

例如在窗体
Form1



Form2 f2 = new
Form2 ( );

f2.ShowDialog (
this );

//

或者

f2.Show ( this
);

//

或者

f2.Owner =
this;

f2.ShowDialog(
);

这样
f2

的所有者就是
Form1

B.WinForm


窗体传值



了解了窗体的显示相关知识,接着
总结一下窗体的传值方法:

1.

通过构造函数

特点:传值是单向的(不可以互相
传值),实现简单

实现代码如下:

在窗体
Form2



int value1;

string value2;

public Form2 (
int value1 , string value2 )

{

InitializeComponent
( );

this.value1 =
value1;

this.value2 =
value2;

}

在窗体
Form1

中这样调用

new Form2 ( 111 , "222" ).Show ( ); //

这样就把
111,"222",


2

个值传送给了
Form2

2.

通过静态变量

特点:传值是双向的,实现简单

实现代码如下:

在一个
app

类中定义一个静态成员
value

public class
app

{

public static
string value;

}

在窗体
Form1

中这样调用

app.value = "f2"; //

给静态成员赋值

new Form2 ( ).Show ( ); //

显示
Form2

在窗体
Form2



this.Text = app.value; //

取回
app.value

的值

app.value = "Form2"; //


app.value

赋值,以便其他窗体调用

3.

通过窗体的公有
属性值

特点:实现简单

实现代码如下:

在窗体
Form2

中定义一个公有属性
Form2Value,

获取和设置
textBox1

的文本值

public string
Form2Value

{

get

{

return
this.textBox1.Text;

}

set

{

this.textBox1.Text
= value;

}

}

在窗体
Form1

中这样调用

Form2 f2 = new
Form2 ( );

f2.Form2Value = "Ok"; //


Form2


textBox1

赋值
Ok

f2.ShowDialog (
);

4.

通过窗体的公有
属性值和
Owner

属性

特点:实现简单
,

灵活

实现代码如下:

在窗体
Form1



public int
Form1Value = 1;

Form2 f2 = new
Form2 ( );

f2.ShowDialog ( this ); //


Form1

作为
Form2

的所有者传递给
Form2

在窗体
Form2



//Form2

的所
有者是
Form1

Form1 f1 = (
Form1 ) this.Owner;

//

取到
Form1

的值是
1

MessageBox.Show
( f1.Form1Value .ToString ( ) );

//


Form1


Form1Value

赋值
222

f1.Form1Value =
222;

5.

通过窗体的公有
属性值和
Application.OpenForms

属性

说明:
Application.OpenForms

属性:获取属于应用程序的打开窗体的集合。
(

此属性在
.NET Framework2.0

版中
)

实现代码如下:

在窗体
Form1



public int
Form1Value = 1;

Form2 f2 = new
Form2 ( );

f2.Show ( );

在窗体
Form2



string formName
= "Form1";

Form fr =
Application.OpenForms [ formName ];

if ( fr != null
)

{

Form1 f1 = (
Form1 ) fr;

//

取到
Form1

的值是
1

MessageBox.Show
( f1.Form1Value.ToString ( ) );

//


Form1


Form1Value

赋值
222

f1.Form1Value =
222;

}

6.

通过事件

实现代码如下:

在窗体
Form2

中定义公有属性
Form2Value,

获取和设置
textBox1

的文本值

并且还定义一个
accept

事件

public string
Form2Value

{

get

{

return
this.textBox1.Text;

}

set

{

this.textBox1.Text
= value;

}

}

public event
EventHandler accept;

private void
button1_Click ( object sender , EventArgs e )

{

if ( accept !=
null )

{

accept ( this , EventArgs.Empty ); //

当窗体触发事件,传递自身引用

}

}

在窗体
Form1



Form2 f2 = new
Form2 ( );

f2.accept +=
new EventHandler ( f2_accept );

f2.Show ( );

void f2_accept (
object sender , EventArgs e )

{

//

事件的接收者通
过一个简单的类型转换得到
Form2

的引用

Form2 f2 =
(Form2) sender;

//

接收到
Form2


textBox1.Text

this.textBox1.Text
= f2.Form2Value;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: