天天看點

在Form窗體中,this的應用

背景:

        在bhht_bill界面中點選某個按鈕時,彈出bhzx界面,并在bhzx界面中輸入值,然後将bhzx界面中輸入的值傳遞回bhht_bill界面。

在bhht_bill界面中:

在bhzx界面中:

         在代碼跟蹤的時候,打開bhzx界面并輸入值後,bill.vsbz中是有值的,但當執行到this.close()後,傳回到bhht_bill界面中時,函數不會執行messagebox.show("某某操作成功!"),而會跳轉至聲明公共變量屬性的地方,開始執行,也就是會再次執行public string vsbz = string.empty,執行完變量屬性後,才會到達messagebox.show("某某操作成功!")的語句,進而bhzx界面傳值回bhht_bill界面失敗!

        那麼傳值失敗的原因是什麼呢?

        原因在于:bhht_bill bill = new bhht_bill();這句話,因為這是建立了一個bhht_bill的執行個體,進而需要擷取這個類的屬性,也就是需要執行bhht_bill類中變量屬性部分的代碼。

        那麼如何實作傳值呢?

小注:

        通過傳遞窗體自身,而不是新的窗體,可以實作showdialog()界面之間的傳值(循環調用)。 

最佳實踐:

        由this(即循環調用)來實作這種功能,其實可以通過一種更為簡單、易懂的方式來實作。

代碼如下: