今天我們一起來看一下WPF窗體之間的交互-窗體之間的傳值。有兩個窗體,一個是父窗體,一個是子窗體。要將父窗體的文本框中的值傳遞給子窗體中的控件。我們該怎么實現?
接下來我們一起來實現窗體之間的傳值,在父窗體上我們放兩個控件,一個文本框TxtMessage,另一個是按鈕BtnSend.子窗體上放一個文本框TxtInput。
要實現傳值,我們首先要在子窗體中定義一個可讀可寫的公用的字符串:getMessage。然后在父窗體中按下按鈕的時候,定義一個字符串Message,用來存放輸入框的文字。再將Message中存放的輸入框的文字傳遞給子窗體中定義的可讀可寫的公用字符串getMessage。下面看一下實現的后台代碼:
看到這里是不是感覺很簡單咧?當然在我們寫程序時,可能使用的就不只是單純的傳遞一個值那么簡單的。因為本人還剛接觸到一個WPF項目,沒有想過的場景。這里我進行假設一個場景,依然還是有父子窗體,子窗體是父窗體中一個按鈕的屬性設置器,在子窗體中添上要設置屬性的值,然后按設置完成,子窗體關閉,父窗體的相應按鈕的屬性也根據子窗體中的設置值而改變!不知道大家明不明白我的意思,這個場景不明白的多看一次應該知道了,上面是簡單傳值,這個場景簡單地說就是窗體之間的信息交互。下面就進入正題,怎么進行交互?其實這里只是實現這個場景的一種方法,也是比較簡單的方法,用到的知識是C#中的委托。這里演示一個最簡單的例子:
首先,自定義一個公共類MessageHelp,用來封裝委托類型的。
public delegate void delegateMessage(int num);
新增數值驗證規則類,這個在前面一篇中已經講了驗證規則,這里就不在細說了。
首先聲明了子窗體,然后child.CallBackMethod設置為自己的函數Method,當然這個Method和委托的參數是一致的,然后就在這里響應委托給過來的參數,處理。大概就這樣了,效果圖是這樣: