子窗显示再消息怎么解决?在线等
功能是这样的:我在父窗体点按钮,再显示子窗体。父窗和子窗都继承了一个基类
基类代码:
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 --------------------编程问答--------------------
恭喜你
答对了
有两个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#