青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 17,  comments - 2,  trackbacks - 0

Form問題是最基本的問題,因為編寫WinApp程序首先接觸的對象就是它,因此在論壇中對它而產生的問題也最常見。

 

Form相關的常見問題大致分為如下的四類問題。

第一類問題:如何控制窗體的顯示順序;

第二類問題:窗體之間的對象如何相互引用或操作;

第三類問題:如何處理窗體唯一性問題;

最后一個問題:如何合理的關閉窗體或程序。

 

接下來先說說如何控制窗體的顯示順序。

很多編程者常常會遇到這樣的現象,例如,通過一個登錄窗體去打開一個主窗體,然后要在主窗體中想關閉這個登錄窗體。那么就有人出主意,你可以在打開主窗體的時候把登錄窗體自身傳進去,然后在主窗體中調用它的Hide方法來隱藏。雖說這樣可以暫時達到你所要的效果,但不是最合理的解決辦法。因為這樣做有如下兩個缺陷。

第一個就是,登錄窗體已經完成使命,而資源沒有得到及時釋放;

其次就是,在窗體關閉的時候比較麻煩,需要找到登錄窗口,關閉自身的同時要關閉登錄窗體。

 

遇到此問題的時候,首要的是分析窗體打開的順序以及相互關聯的條件,常見的類型無非就是主子或者先后這兩種。理解好第一點后,那么要學會合理使用ShowDialogDialogResult這兩個好東西,前者屬于模式打開窗體,后者屬于窗體的返回值。

 

明白了這兩點,就可以很方便的解決類似于登錄窗體的問題,這方面的例子可以參看我的這篇文章。

http://blog.csdn.net/knight94/archive/2006/04/06/652394.aspx

文章中修改了一個WinApp的入口函數Main,那么并不意味著這個方法只能在這兒使用,它可以在很多方法中進行使用,基本語法類似,這里我就不多說了。

 

第二個要說的是窗體之間的對象如何相互引用或者操作。

常見的類似問題有:

1. 如何在子窗體訪問到主窗體中的某某數據;

2. 如何在子窗體中調用主窗體中的某某方法;

3. 如何在子窗體關閉的時候去更新主窗體的某某數據;

 

對于如上的三個問題,完全可以由如下兩種方法來完成。

1. 當數據是子窗體顯示的必要條件的話,通過修改子窗體的構造函數來進行傳遞數據;

2. 如果是不定時的訪問,則可以通過委托來實現。

 

對于第一點,我就不多說了,對于第二點,我用如下的例子來說明。

首先在子窗體中,需要如下:

    //Define two delegate methods to get or set textbox value in main form

    public delegate void SetTextValue( string TextValue );

    public delegate string GetTextValue(  );

    // In sub-form class

    // Handler for methods from main form

    private SetTextValue SetText = null;

    private GetTextValue GetText = null;

 

    // Call methods as follows

    string strValue = GetText();

    SetText( strValue + DateTime.Now.ToString() );

 

除了如上一些操作外,還需要修改子窗體的構造函數,來接收這兩個delegate方法,這里就不多說了。

 

至于主窗體,首先要為這兩個委托來實現對應函數,例如:

    /// <summary>

    /// Get textbox's text for other forms

    /// </summary>

    /// <returns></returns>

    private string GetValue()

    {

        return yourTextBox.Text;

    }

 

    /// <summary>

    /// Set textbox's text for other forms

    /// </summary>

    /// <param name="sValue"></param>

    private void SetValue( string sValue )

    {

        yourTextBox.Text = sValue;

    }

 

那么調用子窗體的時候就比較簡單了。

    // Create subform and show it

    yourSubForm myForm = new yourSubForm(

        new SetTextValue( SetValue ),

        new GetTextValue( GetValue ) );

    myForm.ShowDialog();

 

這樣一個通過委托來操縱主窗體的例子就完成了。這里需要注意的一點,如果在子窗體中大量使用到主窗體的數據的話,那我建議你重新考慮窗體架構,這意味著你目前的窗體架構不合理。

 

有人說了,僅僅為了訪問一個成員就需要勞師動眾編寫委托,多麻煩,直接public成員,或者使用static靜態成員多方便,那么對于這兩點的壞處,我這里就不多說了,參看我的這篇文章你就會明白。

http://blog.csdn.net/knight94/archive/2006/06/04/772886.aspx

 

第三類問題,窗體的唯一性問題,這個問題我在這兒就不多說了,因為這類問題我在如下的文章已經說得很透徹了。

http://blog.csdn.net/knight94/archive/2006/05/24/752783.aspx

 

最后一個問題,如何合理的關閉窗體和程序。很多人關閉了窗體,發現程序進程還在,就不知道如何來操作了。大多數的問題,都是因為第一類問題而產生的連鎖反應。所以我不建議使用Application.Exit來關閉程序,雖說C#寫的是托管程序,內存的釋放可以不用操心,但是好的編碼習慣,有利于在編寫復雜程序的時候能得心應手。

 

那么如何正確的關閉一個窗體或者一個程序呢。

 

如果不能正常關閉的原因是由于第一類問題造成的話,按照第一類的方法去修改窗體顯示順序,來達到合理的步驟。前期的正確,才能保證后期的能通過this.Close進行關閉窗體以及程序。

 

如果是子窗體要關閉連鎖到主窗體關閉的話,這類問題也占一大部分,那么解決此類問題可以采用第二類問題所提到委托方法。

 

那么還有一些窗體關閉,程序沒有正常關閉,是由于子線程沒有關閉的問題,這部分留到線程匯總部分再說。

 

C#寫程序不難,如何編寫正確的程序才是至關重要。此時再回過頭看看前面所說的四類問題的解決方法,其實不難發現這些方法并沒有用到特別深的技術,都是非常普通的方法。俗話說,平凡中見真知,只要把所學的方法正確應用到編碼當中,那么你處理此類問題也能游刃有余。

posted on 2008-11-02 20:44 BeyondCN 閱讀(217) 評論(0)  編輯 收藏 引用 所屬分類: .NET
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲第一免费播放区| 亚洲一区二区三区精品动漫| 久久精品国产免费观看| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩免费在线视频| 亚洲在线视频观看| 夜夜嗨av一区二区三区免费区| 欧美日韩精品是欧美日韩精品| 一区二区三区欧美亚洲| 洋洋av久久久久久久一区| 欧美日韩一区在线视频| 国产精品99久久久久久久女警 | 久久综合中文| 久久福利一区| 亚洲国产专区校园欧美| 9l国产精品久久久久麻豆| 欧美日韩情趣电影| 久久精品国产99| 蜜桃av一区二区三区| 亚洲视频碰碰| 欧美在线精品免播放器视频| 影音先锋亚洲一区| 亚洲人永久免费| 国产精品乱码一区二三区小蝌蚪 | 一区二区高清视频| 亚洲综合第一页| 亚洲国产乱码最新视频| 一区二区三区欧美成人| 国语自产在线不卡| 亚洲人成人一区二区在线观看| 国产精品福利av| 欧美成人高清| 国产精品美女www爽爽爽| 免费欧美日韩国产三级电影| 欧美日韩国产成人精品| 久久久水蜜桃av免费网站| 欧美日韩国产精品一区二区亚洲| 欧美一级大片在线观看| 欧美大秀在线观看| 久久精品动漫| 欧美午夜激情视频| 男人的天堂成人在线| 国产精品亚洲а∨天堂免在线| 欧美激情欧美激情在线五月| 国产伦精品一区二区三区免费迷| 91久久午夜| 国内精品伊人久久久久av影院| 亚洲欧洲精品一区二区三区| 国产原创一区二区| 亚洲一区免费看| 日韩网站在线| 久久综合网色—综合色88| 欧美在线啊v| 欧美午夜久久| 亚洲精品美女91| 亚洲国产精品成人综合色在线婷婷 | 亚洲国产精品第一区二区| 亚洲免费影院| 亚洲综合不卡| 欧美日韩成人激情| 亚洲韩国一区二区三区| 亚洲三级视频| 免费亚洲一区二区| 欧美1区2区视频| 精品成人在线视频| 久久国产精品99国产| 久久国产精品久久久久久电车| 欧美三级中文字幕在线观看| 亚洲免费高清视频| 日韩亚洲一区二区| 欧美电影免费网站| 亚洲精品偷拍| 亚洲午夜一区二区| 欧美午夜精品久久久久久人妖| 亚洲精品一级| 一区二区电影免费观看| 欧美日韩综合视频网址| 一本色道久久综合狠狠躁篇怎么玩| 日韩香蕉视频| 国产精品久久久久99| 午夜精品一区二区三区在线视 | 久久成人精品电影| 国产情侣一区| 久久免费一区| 亚洲茄子视频| 性一交一乱一区二区洋洋av| 国产欧美va欧美va香蕉在| 欧美在线地址| 欧美肥婆在线| 一区二区三区日韩在线观看 | 久久香蕉国产线看观看av| 欧美顶级大胆免费视频| 在线中文字幕日韩| 国产精品一区二区久久久| 久久精品在线免费观看| 欧美激情欧美狂野欧美精品| 在线综合+亚洲+欧美中文字幕| 国产精品久久久久久久久 | 欧美在线中文字幕| 亚洲高清资源| 欧美午夜性色大片在线观看| 欧美一级午夜免费电影| 亚洲国产精品ⅴa在线观看| 亚洲自拍啪啪| 一区二区三区在线免费视频| 欧美精品久久久久久久免费观看| 亚洲无限av看| 亚洲高清在线精品| 久久成人精品电影| 亚洲精品日韩在线观看| 国产精品综合| 欧美77777| 性欧美1819性猛交| 亚洲精品国产精品乱码不99 | 久久精品亚洲一区| 亚洲精品国产无天堂网2021| 国产精品一区久久久| 欧美风情在线| 久久精品国产96久久久香蕉| 夜色激情一区二区| 欧美a级大片| 久久激情综合| 亚洲香蕉成视频在线观看| 一区二区三区在线免费观看 | 欧美一级视频精品观看| 日韩视频在线一区二区| 蜜桃av一区二区三区| 欧美中文字幕不卡| 亚洲一区二区精品| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品爽爽ⅴa在线观看| 欧美精品色综合| 久久久亚洲人| 欧美综合77777色婷婷| 亚洲小说欧美另类婷婷| 亚洲精品日韩欧美| 亚洲国产精品va| 欧美成人四级电影| 免费一级欧美片在线观看| 久久国产免费看| 性欧美video另类hd性玩具| 亚洲视频电影图片偷拍一区| 亚洲欧洲一区| 亚洲精品专区| 一本色道久久综合亚洲二区三区| 亚洲高清不卡| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品久久久久久亚洲调教| 欧美激情一区| 欧美电影资源| 欧美精品粉嫩高潮一区二区| 欧美成人一区二区三区| 欧美激情视频一区二区三区在线播放 | 亚洲欧洲精品一区二区三区波多野1战4 | 欧美一区二区三区四区在线观看| 亚洲男人第一网站| 亚洲欧美精品伊人久久| 亚洲欧美一区二区三区极速播放| 亚洲一级特黄| 午夜宅男久久久| 久久久激情视频| 欧美大胆成人| 亚洲日本中文字幕免费在线不卡| 亚洲激情视频在线播放| 亚洲日本成人女熟在线观看| 99re热这里只有精品视频| 亚洲午夜高清视频| 午夜在线精品偷拍| 久久久久欧美精品| 欧美wwwwww| 欧美午夜精品久久久久久超碰| 国产精品久久久999| 国产日韩专区| 亚洲国产精品成人精品| 一区二区三区久久网| 久久狠狠一本精品综合网| 欧美成人精品一区| 99国产精品国产精品久久| 亚洲影院免费| 免费成人毛片| 国产精品视频网址| 亚洲国产视频a| 亚洲影视九九影院在线观看| 久久久久国产一区二区三区四区 | 久久九九国产| 亚洲国产精品ⅴa在线观看| 亚洲一本大道在线| 六月丁香综合| 国产精品福利久久久| 伊人伊人伊人久久| 亚洲自拍偷拍色片视频| 免费在线亚洲| 先锋亚洲精品| 欧美精品一区二区三区高清aⅴ| 国产精品日本| 一区二区高清视频在线观看| 玖玖玖免费嫩草在线影院一区| 亚洲精品男同| 久久字幕精品一区| 国产精品一区在线观看你懂的|