子窗體傳參給父窗體(Owner)

2021-05-08 03:39:57 字數 2153 閱讀 9332

這幾天做專案時,遇到了這一問題:

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

asiwin32window _ ) as

dialogresult

visual basic(用法)

dim

instance

asform

dimowner

asiwin32window

dimreturnvalue

asdialogresult

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 值之一分配給對話方塊,方法是將該值分配給窗體上 button 的 dialogresult 屬性或通過使用**設定窗體的 dialogresult 屬性。此方法隨後返回該值。可以使用此返回值確定如何處理對話方塊中發生的操作。例如,如果關閉了對話方塊,並通過此方法返回了 dialogresult.cancel 值,則可防止執行在呼叫 showdialog 之後的**。

當窗體顯示為模式對話方塊時,單擊「關閉」按鈕(窗體右上角帶 x 的按鈕)會隱藏窗體並將 dialogresult 屬性設定為 dialogresult.cancel。與無模式窗體不同,當使用者單擊對話方塊的關閉窗體按鈕或設定 dialogresult 屬性的值時,.net framework 不呼叫 close 方法。窗體轉而可以隱藏並可重新顯示,而不用建立該對話方塊的新例項。因為未關閉顯示為對話方塊的窗體,所以在您的應用程式不再需要該窗體時,必須呼叫該窗體的 dispose 方法。

showdialog 方法的此版本使您得以指定將擁有所顯示的對話方塊的特定窗體或控制項。如果使用此方法的沒有引數的版本,則顯示的對話方塊將自動歸應用程式的當前活動視窗所有。

winform 父窗體與子窗體之間傳參

一.使用靜態類該方式可以簡單的理解為靜態變數全域性共享 多個引數可以採用這種方式 二 1 父窗體中宣告乙個靜態的父窗體型別的臨時物件 父窗體和子窗體之間傳參 public static mainmdi mainmdi 2 父窗體建構函式中對該變數賦值 public mainmdi 3 把要傳遞的引數...

C WinForm 父窗體 子窗體 傳值

本次示例效果如下 form1為父窗體 包含textbox1 button1 form2為子窗體 包含textbox2 button2 父窗體給子窗體傳值 1.點選form1的button1 開啟form2 父窗體給子窗體傳值 可以呼叫過載子窗體的建構函式 直接傳入相關數值 public partia...

窗體間傳值 ,子窗體傳給父窗體

第一種方法 將form1整個窗體作為值傳給form2 form1 button1彈出 from2,from2 numericupdown1的值改變,使form1 textbox1的值改變。form1 第一種方法 將整個窗體作為值傳給form2 private void button1 click o...