子窗体传参给父窗体(Owner)

这几天做项目时,遇到了这一问题:

...

frmSendSMS sms = (frmSendSMS)this.Owner;
sms.listView1.Items.Add(num);

...

报“未将对象引用设置到对象的实例”错.我在网上搜了一下,终于找到问题的症结了.最后结合MSDN整理如下(网络真是个好东西,资料浩瀚.):

注:主要涉及到ShowDialog()方法,有一可选参数owner.

 

Form.ShowDialog()方法 (IWin32Window)

将窗体显示为具有指定所有者的模式对话框。

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)

 

 语法

Visual Basic(声明)
Public Function ShowDialog ( _ owner As IWin32Window _ ) As DialogResult 
Visual Basic(用法)
Dim instance As Form Dim owner As IWin32Window Dim returnValue As DialogResult returnValue = instance.ShowDialog(owner)
C#
public DialogResult ShowDialog ( IWin32Window owner )
C++
public: DialogResult ShowDialog ( IWin32Window^ owner )
J#
public DialogResult ShowDialog ( IWin32Window owner )
JScript
public function ShowDialog ( owner : IWin32Window ) : DialogResult 

 

参数
owner

任何实现 IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。

 

 

返回值
DialogResult 值之一。

异常

异常类型条件

ArgumentException

owner 参数中指定的窗体就是显示的窗体。

InvalidOperationException

要显示的窗体已经可见。

- 或 -

所显示窗体被禁用。

- 或 -

显示的窗体不是顶级窗口。

- 或 -

显示为对话框的窗体已经是模式窗体。

InvalidOperationException

当前进程不是以用户交互模式运行。有关更多信息,请参见 UserInteractive

备注

可以使用此方法在应用程序中显示模式对话框。调用此方法时,直到关闭对话框后,才执行此方法后面的代码。可以将 DialogResult 值之一分配给对话框,方法是将该值分配给窗体上 ButtonDialogResult 属性或通过使用代码设置窗体的 DialogResult 属性。此方法随后返回该值。可以使用此返回值确定如何处理对话框中发生的操作。例如,如果关闭了对话框,并通过此方法返回了 DialogResult.Cancel 值,则可防止执行在调用 ShowDialog 之后的代码。

当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 Close 方法。窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。因为未关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。

ShowDialog 方法的此版本使您得以指定将拥有所显示的对话框的特定窗体或控件。如果使用此方法的没有参数的版本,则显示的对话框将自动归应用程序的当前活动窗口所有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值