Wednesday, April 14

.Framework上一个不明确的地方

在中文版.Framework SDK文档的里的"从对话框的父窗体检索信息"一节写的不清楚,MSDN联接在这里

原文如下:
根据对话框的用途,可能希望访问该对话框的父窗体提供的信息。对话框的初始化可能需要此信息,或者此信息可能涉及有关父窗体的应用程序状态的特定详细资料。
使用该对话框的 Form.ParentForm 属性访问父窗体的公共成员。应当将由 ParentForm 属性返回的引用显式转换成适当的类型。 下列代码演示如何使用 ParentForm 属性访问父窗体上的属性(在此示例中为 Text 属性):

' Visual Basic
Public Sub GetParentText()
Dim x as String
x = CType(Me.ParentForm, Form1).Text
End Sub

// C#
public void GetParentText()
{
string x = ((Form1)this.ParentForm).Text
}


可是所谓的父窗体指的是什么呢?
这里的ParentForm属性只有在MDI环境下的子窗口才有效,可见父窗体指的是MDI风格的父窗口。(在MSDN里这之前的章节里根本没有提到过MDI字样)
如果你是通过一个普通的ShowDialog(me)显出出来的窗口,那么千万不要被MSDN误导,这时候的父窗口需要通过Owner属性取得。我想Owner更常用。

读MSDN很有用。我知道了Close()并不会真正关闭窗口,只是Hide()而已。Dispose()才是生死判官。呵呵。

No comments: