form.showDialog弹不出窗口。。

Novisland 2014-01-02 04:22:02


如题,在一个对话框里点击一个按钮,

按钮的事件函数里加上:

Form fm = new Form();
fm.ShowDialog();

运行后点击此按钮,程序运行到这两句就直接退出,也没报错。。

奇怪的是,在这个对话框中任何一个按钮里加这段代码都一样,点击后运行到这两句立即退出程序。。

可是在Form_load函数里加,就可以正常显示弹出的对话框。


这是为什么?
...全文
992 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
神奇的章鱼哥 2014-01-04
  • 打赏
  • 举报
回复
如果在Load里执行没有问题,那么很可能没有注册这个事件委托吧,右键点这个方法,查找所有引用看看有没有注册这个事件。
超级橡树 2014-01-03
  • 打赏
  • 举报
回复
Form fm = new Form(); 是Form几啊?还是就命名了这个?或者看看这个窗体的代码模式,它的真实名称到底是什么?
会飞的溜溜 2014-01-03
  • 打赏
  • 举报
回复
在有问题就是你的解决方案有问题,要不就是你的VS却少加载应用程序的组件或是生成应用程序的组件缺失
会飞的溜溜 2014-01-03
  • 打赏
  • 举报
回复
DataGridView dgv = new DataGridView(); frm.sh 去掉这个
会飞的溜溜 2014-01-03
  • 打赏
  • 举报
回复
private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(123, 138); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form frm = new Form(); DataGridView dgv = new DataGridView(); frm.sh frm.ShowDialog(); } }
c02645 2014-01-03
  • 打赏
  • 举报
回复
你要先了解form,它是要有InitializeComponent()才能显示出来的,没有的话它就是个空的,相当于什么都没有,怎么会有弹出窗口呢? 所以你要先添加一个窗体在你的项目里,添加时它会自动生成InitializeComponent,比如Form1 那么你就可以 Form fm=new Form1(); 这样才会出来。
Novisland 2014-01-03
  • 打赏
  • 举报
回复
引用 20 楼 u012811456 的回复:
亲,你new 的这个实例只是当前下的一个控件并没有加载到 Application.Run(..); 这里
那我怎么在main函数里加代码,才能实现在form1里点击按钮以后,弹出form2呢?
会飞的溜溜 2014-01-03
  • 打赏
  • 举报
回复
亲,你new 的这个实例只是当前下的一个控件并没有加载到 Application.Run(..); 这里
Novisland 2014-01-03
  • 打赏
  • 举报
回复
引用 17 楼 F546445693 的回复:
怎么跳到主线程了? 可能是你定义的窗体有问题吧! 方便的发一份代码过来看看 546445693@qq.com
十分感谢,已发,麻烦查收。
zmlrwy 2014-01-03
  • 打赏
  • 举报
回复
你是不是把你那窗体的cancelButton设成那个按钮了?
F546445693 2014-01-03
  • 打赏
  • 举报
回复
怎么跳到主线程了? 可能是你定义的窗体有问题吧! 方便的发一份代码过来看看 546445693@qq.com
lyx266 2014-01-03
  • 打赏
  • 举报
回复
        private void button1_Click(object sender, EventArgs e)
        {
            Form frm = new Form();
            frm.ShowDialog();            
        }
我这样写都没什么问题 会弹出一个什么也没有的窗体
Novisland 2014-01-03
  • 打赏
  • 举报
回复
引用 14 楼 F546445693 的回复:
[quote=引用 13 楼 u012413894 的回复:] [quote=引用 11 楼 F546445693 的回复:] [quote=引用 8 楼 u012413894 的回复:] [quote=引用 7 楼 F546445693 的回复:] Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?[/quote] 又键项目,添加,选择Form窗体,确定 这个就是新建的窗体,默认是继承Form的 你再用这个新的窗体去实例,ShowDialog();[/quote] 我试过了,还是一样的,一点按钮就程序退出。[/quote] 设个断点一步步跟进去看看!F11[/quote] 我F11过了,两句都运行了,两句运行完跳到这里:


        static void Main()
        {

            #region Api_CallCreateMutex;
            IntPtr hMutex;
            string strAppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
           
            hMutex = CreateMutex(null, true, strAppName);
            if (GetLastError() != ERROR_ALREADY_EXISTS)
            {
                Application.Run(new Form1()); ////////---->跳到这一句。
            }
            else
            {
                MessageBox.Show("本程序只允许同时运行一个");
                ReleaseMutex(hMutex);
            }
            #endregion  
               
        
        }

F546445693 2014-01-03
  • 打赏
  • 举报
回复
引用 13 楼 u012413894 的回复:
[quote=引用 11 楼 F546445693 的回复:] [quote=引用 8 楼 u012413894 的回复:] [quote=引用 7 楼 F546445693 的回复:] Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?[/quote] 又键项目,添加,选择Form窗体,确定 这个就是新建的窗体,默认是继承Form的 你再用这个新的窗体去实例,ShowDialog();[/quote] 我试过了,还是一样的,一点按钮就程序退出。[/quote] 设个断点一步步跟进去看看!F11
Novisland 2014-01-03
  • 打赏
  • 举报
回复
引用 11 楼 F546445693 的回复:
[quote=引用 8 楼 u012413894 的回复:] [quote=引用 7 楼 F546445693 的回复:] Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?[/quote] 又键项目,添加,选择Form窗体,确定 这个就是新建的窗体,默认是继承Form的 你再用这个新的窗体去实例,ShowDialog();[/quote] 我试过了,还是一样的,一点按钮就程序退出。
jiaoshiyao 2014-01-03
  • 打赏
  • 举报
回复
我估计你form中没有错误 是不是没执行到这个事件- -
F546445693 2014-01-03
  • 打赏
  • 举报
回复
引用 8 楼 u012413894 的回复:
[quote=引用 7 楼 F546445693 的回复:] Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?[/quote] 又键项目,添加,选择Form窗体,确定 这个就是新建的窗体,默认是继承Form的 你再用这个新的窗体去实例,ShowDialog();
小恒丶 2014-01-03
  • 打赏
  • 举报
回复
引用 8 楼 u012413894 的回复:
[quote=引用 7 楼 F546445693 的回复:] Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?[/quote] form 是窗体 亲 就是你要弹出来的窗体的名字哦
  • 打赏
  • 举报
回复
F11 单步调试 form2不会定义就再看几页书,你发帖的时间够你去学会怎么定义form2了。
Novisland 2014-01-03
  • 打赏
  • 举报
回复
引用 7 楼 F546445693 的回复:
Form看起来很奇怪啊!有这个窗体吗你的项目下 Form里面处理了什么,是不是自身show后直接disposable了
我没有自己定义Form,这个不是系统自己有定义的吗? 如果需要自己定义一个Form2的话,Form2该怎么定义,不能直接从Form继承一下就好了吗?
加载更多回复(6)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧