当前位置:编程学习 > C#/ASP.NET >>

子窗显示再消息怎么解决?在线等

功能是这样的:我在父窗体点按钮,再显示子窗体。
父窗和子窗都继承了一个基类
基类代码:
 protected override void OnShown(EventArgs e)
      {

          if (this.Name == "FormShow")
          {
              if (this.Visible == true)
              {
                  this.Visible = false;
                  //Enabled = false;
                  this.Close();
                  MessageBox.Show("你没有权限哦,我要隐藏了哦~");

              }
          }
          base.OnShown(e);
      }



按钮事件:

        private void button1_Click(object sender, EventArgs e)
        {
            FormShow fs = new FormShow();
            fs.Show();
        }



目前功有是已经实现,但是if (this.Name == "FormShow")和 if (this.Visible == true)
条件满足的时候FormShow这个窗体是不显出来的。事实上这个子窗体会显示出来然后消失。我不想子窗体要么显示,要不不显示~
求各位大侠指点,怎么实现要要的效果?
谢谢 --------------------编程问答-------------------- OnShow事件时在显示出来时才触发的,所以肯定要显示一下,其实,你不调用 fs.Show();就可以了 --------------------编程问答-------------------- 又是面向对象不过关吧

if (this.Visible == true)
知道this是什么意思吗?

FormShow fs = new FormShow();
知道上面这句什么意思吗?

FormShow fs1 = new FormShow(); 
FormShow fs1 = new FormShow();
知道上面两句有几个this吗?
知道上面两句的this是不一样的吗?
--------------------编程问答-------------------- if (this.Visible == true)当前实例
FormShow fs = new FormShow();实例化


FormShow fs1 = new FormShow();  
FormShow fs1 = new FormShow();
这样他们有两个this --------------------编程问答--------------------
引用 3 楼  的回复:
if (this.Visible == true)当前实例
FormShow fs = new FormShow();实例化


FormShow fs1 = new FormShow();  
FormShow fs1 = new FormShow();
这样他们有两个this

恭喜你
答对了
有两个this
当你每次点击button1_Click时
都会创建一个新的this
那么
if (this.Visible == true)
还有效果吗?
除非
单例


--------------------编程问答-------------------- if (this.Name == "FormShow")有效果
  {
  if (this.Visible == true)有效果

  {
  this.Visible = false;有效果

  this.Close();有效果
}
我补充一下我的需求吧:
FormShow fs = new FormShow();
  fs.Show();
我希望FormShow 这个窗体去判断该不该显示,现在功能实现了。但是FormShow会先显示一下然后消失,
我想请教有没有别的办法可以不显示再消息?
谢谢 --------------------编程问答-------------------- 不用覆写onshow方法
实例化完 判断下满足条件 show出来 不满足不要show就完了
--------------------编程问答-------------------- 子窗体不要在OnShown里面判断,在Form_Load里判断。 --------------------编程问答-------------------- onshow方法是写在基类里的。因为项目基本开发完了。现在才开始弄权限的事情 --------------------编程问答-------------------- 越看越不明白你的要求
总感觉在基类里使用this不是很对
试试Application.OpenForms

     protected override void OnShown(EventArgs e)
        {
            foreach (Form f in Application.OpenForms)
            {
                if (f.Name == "FormShow" && f.Visible)
                {
                }
            }

            base.OnShown(e);
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,