<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    靈魂-放水

    為學日益,為道日損。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

    提問:


    問者:7712190(25458848@163.com) 信譽:96 級別:user5 日期:2006-9-10 23:49:27

    小弟一直都是做 B/S開發 
    這幾天心血來潮 想寫一寫 C/S程序 
    一入門就遇到這個問題 我在 登陸窗體體 NEW了 一個新窗體吧新窗體Show了 之后 原來得窗體cLOSE。新NEW得窗體也關閉了  不知道為什么 請指點
    
    另求 C/S程序得 設計方法。
    比如如何處理 公共得變量 等應該注意得事情  希望大家不吝賜教
    

    回復:



    答者:wzq6511() 信譽:100 級別:user1 日期:2006-9-11 0:36:28 id:36659940

    不要用close,用hide,原先的窗體只能隱藏起來不能關閉。
    

    答者:bejon(阿牛[如果我懂,必坦誠相告;如果您懂,請不憐賜教。]) 信譽:93 級別:star1 日期:2006-9-11 2:00:21 id:36660132

    在new form后使用this.close;來完成
    
    在new form之前把窗體id寫在注冊表,然后在new form之后檢查那里,如果有值就使用api關閉那個窗體,然后把注冊表清空。
    
    
    

    答者:zhgroup(王員外) 信譽:99 級別:star1 日期:2006-9-11 8:06:33 id:36660371

    1、要看原窗體是那個窗體了,如果是入口的窗體,則應hide,想要顯示時可用Show.
    如果是登陸窗體,在主窗體的Main入口處
    FormLogin frm = new FormLogin();
    frm.ShowDialog();
    if 登陸失敗
     關閉窗體
     return
    2、和B/S基本類似,只不過對于狀態信息比較容易控制。
    
    
    

    答者:qzh1119(大浪淘沙) 信譽:59 級別:user2 日期:2006-9-11 8:12:07 id:36660412

    up
    

    答者:qzh1119(大浪淘沙) 信譽:59 級別:user2 日期:2006-9-11 8:12:33 id:36660419

    關注,學習中
    

    答者:bestshl(快樂的Coder) 信譽:100 級別:user2 日期:2006-9-11 8:24:52 id:36660529

    zhgroup(王員外) 正解
    

    答者:interboy(馮東) 信譽:100 級別:user2 日期:2006-9-11 8:27:37 id:36660559

    zhgroup(王員外) 說的對,如果你把main函數放在loginform里的話,那么它就是主窗體,如果你在它里面調用了this.close();你想啊,主窗體都關了,別的呢,皮之不存,毛將焉附!
    建議把loginform作為子窗體,通過主窗體了掉子窗體進行判斷
    

    答者:7712190(25458848@163.com) 信譽:96 級別:user5 日期:2006-9-11 12:40:41 id:36667940

    問題是我不想HIde  真的沒有其他的辦法了么?
    

    答者:lovefootball(蟑螂(生活就是扯淡--做人要放低姿態)) 信譽:98 級別:star2 日期:2006-9-11 12:49:07 id:36668125

    上面已經說清楚了
    如果你不想hide
    那你就在main里面先new這個登陸窗體
    如果登陸成功在run主窗體
    否則關閉
    

    答者:zahuifan(雜燴飯) 信譽:93 級別:star1 日期:2006-9-11 12:56:33 id:36668305

    up
    

    答者:guyes123(以為喜歡這里,所以來接分) 信譽:100 級別:user1 日期:2006-9-11 13:00:06 id:36668391

    一般還是用HIDE吧
    其他的我就不會了
    

    答者:naturalth(自我批判,是思想、品德、素質、技能創新的優良工具) 信譽:99 級別:user4 日期:2006-9-11 13:07:31 id:36668586

    #region "Main"
    public ModMain()
    {
    }
    
    [STAThreadAttribute]
    static void Main() 
    {
    //異常處理
    Application.ThreadException += new ThreadExceptionEventHandler(MainUIThreadExceptionHandler);
    
                Common.Database.ConnectionString = Get_Info();
    frmLogon frm = new frmLogon();
                frm.txtUser.Text = loginUser;
    if (frm.ShowDialog()==System.Windows.Forms.DialogResult.Cancel)
    {
    return;
    }
                
    System.Windows.Forms.Application.Run(new myMenu());
    }
    #endregion
    

    答者:xvting(xvting) 信譽:103 級別:user4 日期:2006-9-11 15:10:44 id:36672298

    VS默認的WinForm程序模板只有一個程序消息循環,并且入口Form關閉的同時退出程序消息循環,結束程序。
    
    開始
     |
     |
    消息循環(入口Form)
     |
     |
    結束
    
    
    
    

    答者:xvting(xvting) 信譽:103 級別:user4 日期:2006-9-11 15:14:42 id:36672390

    可以設計下面的流程
    
    開始
     |
     |                    False
    消息循環(登陸Form)---------
     |                          |
     | True                     |
     |                          |
    消息循環(主Form)           |
     |                          |
     |--------------------------
    退出
    

    答者:xvting(xvting) 信譽:103 級別:user4 日期:2006-9-11 15:16:34 id:36672453

    Demo
    
    StartApp.cs文件
    /////////////////////////////////////////////////////////////////
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Text;
    
    namespace WinFromDemo
    {
    public class StartApp
    {
    private static bool LoginResult = false;
    
    [STAThread]
    static void Main()
    {
    //First Message Loop
    LoginContext loginContext = new StartApp.LoginContext();
    Application.Run(loginContext);
    
    if (LoginResult)
    {
    //Second Message Loop
    StartApp.MainContext mainContext = new StartApp.MainContext();
    Application.Run(mainContext);
    }
    }
    
    public class LoginContext : ApplicationContext 
    {
    private LoginDialog loginDialog;
    
    public LoginContext() 
    {
    loginDialog = new LoginDialog();
    loginDialog.StartPosition = FormStartPosition.CenterScreen;
    loginDialog.Closed += new EventHandler(OnFormClosed);            
    loginDialog.Show();
    }
    
    private void OnFormClosed(object sender, EventArgs e) 
    {
    LoginResult = !(this.loginDialog.DialogResult == DialogResult.Cancel);
    
    ExitThread();
    }
    }
    
    public class MainContext : ApplicationContext 
    {
    private Form mainForm;
    
    public MainContext() 
    {
    mainForm = new Form();
    mainForm.StartPosition =  FormStartPosition.CenterScreen;
    mainForm.Closed += new EventHandler(OnFormClosed);            
    mainForm.Show();
    }
    
    private void OnFormClosed(object sender, EventArgs e) 
    {
    ExitThread();
    }
    }
    }
    }
    
    

    答者:csLius() 信譽:100 級別:user2 日期:2006-9-11 15:17:56 id:36672496

    http://blog.csdn.net/Knight94/archive/2006/08/22/1104957.aspx
    
    

    答者:pegtop(再回首) 信譽:100 級別:user2 日期:2006-9-11 15:23:51 id:36672677

    新窗體是在原窗體基礎上建立起來的,不能關閉原窗體只能隱藏.
    
    要想處理全局變量,建議采用Static變量
    

    答者:pretty_soft() 信譽:100 級別:user1 日期:2006-9-11 15:36:50 id:36673096

    我覺得還是
     開啟---登陸畫面/顯示主窗體默認界面---用showdialog顯示登陸---判斷返回值初始權限
    這樣比較好
    把應用程序加載放到啟動畫面去
    這種更適合比較大的系統,不同的模塊不同的用戶權限
    

    答者:Santos(快樂的GG) 信譽:100 級別:user4 日期:2006-9-11 16:15:46 id:36674473

    ShowDialog();方法才是正解.
    
    Button1_Click()
    {
    
    xxxForm frm = new xxxForm();
    frm.ShowDialog();
    
    }
    

    答者:kissknife(側身向南邊) 信譽:100 級別:user5 日期:2006-9-11 16:20:54 id:36674652

    http://www.cnblogs.com/KissKnife/archive/2006/09/10/500158.html
    

    答者:ttgzs(一路狂奔) 信譽:100 級別:user1 日期:2006-9-11 17:01:58 id:36676000

    #region "Main"
    public ModMain()
    {
    }
    
    [STAThreadAttribute]
    static void Main() 
    {
    //異常處理
    Application.ThreadException += new ThreadExceptionEventHandler(MainUIThreadExceptionHandler);
    
                Common.Database.ConnectionString = Get_Info();
    frmLogon frm = new frmLogon();
                frm.txtUser.Text = loginUser;
    if (frm.ShowDialog()==System.Windows.Forms.DialogResult.Cancel)
    {
    return;
    }
                
    System.Windows.Forms.Application.Run(new myMenu());
    }
    #endregion
    
    

    答者:kubbye(小蛤蟆就是我) 信譽:100 級別:user1 日期:2006-9-11 23:15:00 id:36681363

    準確的說,做為啟動窗體的那個窗體是不能關的,它關了,程序就停了,其他的窗體可以關,啟動窗體只能隱藏
    

    答者:kubbye(小蛤蟆就是我) 信譽:100 級別:user1 日期:2006-9-11 23:17:29 id:36681383

    接上面,你可以把主界面作為啟動窗體,然后在主界面未顯示出來前,先顯示登錄窗體,登錄成功再顯示主窗體,登錄不成功,直接退出,直接在form的load事件中寫就好了
    

    答者:qiujb(楚留香) 信譽:100 級別:user2 日期:2006-9-12 8:12:25 id:36682515

    zhgroup(王員外) 正解
    

    答者:Samen168(讓代碼為你寫代碼) 信譽:95 級別:star1 日期:2006-9-12 8:56:52 id:36683381

    邏輯問題
    main()
    {
       loginform lf = new loginform();
       if(lf.Showdialog() == DialogResult.OK)
       {
         mainform mf = new mainform();
         mf.show();
       }
    }
    這樣根據不存在誰打開誰
    

    答者:Samen168(讓代碼為你寫代碼) 信譽:95 級別:star1 日期:2006-9-12 8:57:00 id:36683386

    根本
    

    答者:sunxianyu(找工作) 信譽:100 級別:user2 日期:2006-9-12 9:05:26 id:36683679

    zhgroup(王員外) ( ) 信譽:99    Blog 
    正解
    

    答者:fds2003(Hunter) 信譽:99 級別:user5 日期:2006-9-12 9:17:54 id:36684103

    上面能說的都講了!
    

    答者:yangao(偶新手 請問門在哪里?) 信譽:100 級別:user4 日期:2006-9-12 9:41:16 id:36684775

    學習
    

    答者:henrydee1(小d) 信譽:101 級別:user2 日期:2006-9-12 10:29:21 id:36686255

    if (this.ActiveMdiChild!=null)
    {
    this.ActiveMdiChild.Close(); //關閉已經打開的子窗體
    }
    
    InSchool child_InSchool=new InSchool();
    child_InSchool.MdiParent=this;//this表示本窗體為其父窗體
    child_InSchool.Show();
    

    答者:xiaoliangwh(小亮wh) 信譽:100 級別:user2 日期:2006-9-12 23:55:03 id:36705585

    xuexi
    

    答者:sdl2005lyx() 信譽:100 級別:user4 日期:2006-9-13 8:26:41 id:36706505

    lz:一個很簡單的辦法(剛好前幾天解決的):
         你在原來的窗體設置一個public bool bNew=false;的變量,在你要new新窗體的地方改成如下代碼:
         bNew=true;
         this.Close();
         //原來窗體消失了,但它的類作用域并沒有消失
       
    然后在你原來定義、使用原窗體變量的地方,即frmOld.ShowDialog();之后:
        if(frmOld.bNew)
        {
            NewForm frmNew=new NewForm ();
            frmNew.ShowDialog();
        } 
    問題就搞定了。。。  
    
    
    

    答者:GXY2005(曉晨美眉好^_^) 信譽:94 級別:user5 日期:2006-9-13 8:52:21 id:36707030

    jf
    

    答者:wuhuiITren(CSDN男主角) 信譽:100 級別:user2 日期:2006-9-14 13:26:23 id:36740819

    樓上的都說了,樓主自己一個個試就可以了啊,想怎么辦就怎么辦啊
    

    答者:slex(蘂橤(蛋不能扯遠,笑不能搞大)) 信譽:100 級別:user4 日期:2006-9-14 14:35:50 id:36743030

    上面的那兩個方法已經能解決lz問題了,該結了 呵呵
    
    posted on 2007-02-02 08:53 放水老倌 閱讀(11364) 評論(2)  編輯  收藏 所屬分類: .NET

    Feedback

    # re: [轉]新手入門-WinForm如何打開一個新窗體得同步關閉當前窗體。另求C/S結構程序設計方式。 2007-08-21 17:51 Jos
    原窗體如果是主窗體的話,那么原窗體是不可以Close,只能hide.主窗體Close了就會把整個程序關閉.  回復  更多評論
      

    # re: [轉]新手入門-WinForm如何打開一個新窗體得同步關閉當前窗體。另求C/S結構程序設計方式。[未登錄] 2007-08-29 08:07 放水老倌
    在手持設備端開發的時候,hide不太好用。  回復  更多評論
      

    主站蜘蛛池模板: 亚洲国产美女精品久久久久∴ | 思思久久99热免费精品6| 日本精品人妻无码免费大全| 日韩精品一区二区亚洲AV观看| 一区二区三区无码视频免费福利| 亚洲日韩中文字幕在线播放| 中文成人久久久久影院免费观看 | 一级毛片在线免费看| 亚洲国产精品无码中文字| a级片免费在线播放| 亚洲AV福利天堂一区二区三| 久久精品国产免费| 亚洲精品成人网站在线播放 | 韩国日本好看电影免费看| 亚洲精品久久久久无码AV片软件| 日韩一级在线播放免费观看| 青娱乐在线免费观看视频| 亚洲一区二区三区偷拍女厕| 十八禁无码免费网站| 亚洲AV男人的天堂在线观看| 波多野结衣一区二区免费视频| 一二三四在线观看免费中文在线观看 | 亚洲视频在线观看| 妻子5免费完整高清电视| 亚洲日韩精品无码AV海量| 免费国产成人午夜私人影视 | 2022国内精品免费福利视频| 亚洲好看的理论片电影| 久久综合AV免费观看| 阿v免费在线观看| 久久精品国产亚洲AV嫖农村妇女| 成年午夜视频免费观看视频| 深夜久久AAAAA级毛片免费看| 亚洲成色999久久网站| 无码视频免费一区二三区| 久久国产精品免费一区二区三区| 在线观看亚洲一区二区| 国产中文字幕免费| 久久综合给合久久国产免费| 久久亚洲精品11p| 国产V亚洲V天堂无码|