none
求助有关窗体的问题? RRS feed

  • 问题

  • 想在程序主窗体运行后,弹出一个消息框询问是否要对程序做初始设置,请问如何能在主窗体运行后,再弹出这个消息框?
    2011年9月7日 2:25

答案

  • 想在程序主窗体运行后,弹出一个消息框询问是否要对程序做初始设置,请问如何能在主窗体运行后,再弹出这个消息框?


    你大可以换一个思路,不能用Form_Load——

    在某个Form类中增加一个LoadComplete事件,然后在原来的Form_Show事件中引发。比如:

    namespace WinFormCSharp
    {
        public partial class Form1 : Form
        {
            public event EventHandler LoadCompleted = null;

            public Form1()
            {
                
                InitializeComponent();
              
            }

            void Form1_LoadCompleted(object senderEventArgs e)
            {
                MessageBox.Show("要不要加载");
            }

          

            private void Form1_Shown(object senderEventArgs e)
            {
                //模拟你要初始化加载的大量代码,用DoEvents代替。
                Application.DoEvents();
                LoadCompleted += new EventHandler(Form1_LoadCompleted);
                //完成初始化加载之后,引发自定义事件。
                LoadCompleted(thisnull);
            }


        }
    }
    具体可以参考:http://www.codeproject.com/KB/dialog/WinformsUsingShownEvent.aspx

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月7日 5:57
    版主
  • 你可以改为在主窗体打开之前来处理,你还可以做一个等等的窗体,等数据初始或加载完成后才显示主窗体。

    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
    
            if (MessageBox.Show("是否进行初始化设置?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                // 调用初始化设置的方法
                // 相关参数的加载等等
            }
    
            Application.Run(new MainFrom());
        }
    }
    



    知识改变命运,奋斗成就人生!
    2011年9月14日 0:57
    版主
  • 楼主本来的想法,不一定就是合理的。我们应尽可能的给楼主更合理的意见。
    知识改变命运,奋斗成就人生!
    • 已标记为答案 牛先生 2011年9月19日 2:34
    2011年9月15日 2:58
    版主

全部回复

  • 想在程序主窗体运行后,弹出一个消息框询问是否要对程序做初始设置,请问如何能在主窗体运行后,再弹出这个消息框?


    你大可以换一个思路,不能用Form_Load——

    在某个Form类中增加一个LoadComplete事件,然后在原来的Form_Show事件中引发。比如:

    namespace WinFormCSharp
    {
        public partial class Form1 : Form
        {
            public event EventHandler LoadCompleted = null;

            public Form1()
            {
                
                InitializeComponent();
              
            }

            void Form1_LoadCompleted(object senderEventArgs e)
            {
                MessageBox.Show("要不要加载");
            }

          

            private void Form1_Shown(object senderEventArgs e)
            {
                //模拟你要初始化加载的大量代码,用DoEvents代替。
                Application.DoEvents();
                LoadCompleted += new EventHandler(Form1_LoadCompleted);
                //完成初始化加载之后,引发自定义事件。
                LoadCompleted(thisnull);
            }


        }
    }
    具体可以参考:http://www.codeproject.com/KB/dialog/WinformsUsingShownEvent.aspx

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月7日 5:57
    版主
  • 还想看看有没有更多的解决方案
    2011年9月8日 0:53
  • Hi 牛先生,
    欢迎来到MSDN 论坛!

    就目前而言,其他方案也是类似于Wei的方案,在 Shown( )事件中添加代码逻辑。

    所以,本质上来说,我个人认为没有什么其他更好的方案了。

    祝您今天愉快!


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年9月13日 10:48
    版主
  • 你可以改为在主窗体打开之前来处理,你还可以做一个等等的窗体,等数据初始或加载完成后才显示主窗体。

    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
    
            if (MessageBox.Show("是否进行初始化设置?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                // 调用初始化设置的方法
                // 相关参数的加载等等
            }
    
            Application.Run(new MainFrom());
        }
    }
    



    知识改变命运,奋斗成就人生!
    2011年9月14日 0:57
    版主
  • 楼主本来的想法,不一定就是合理的。我们应尽可能的给楼主更合理的意见。
    知识改变命运,奋斗成就人生!
    • 已标记为答案 牛先生 2011年9月19日 2:34
    2011年9月15日 2:58
    版主