社区
C#
帖子详情
在form 的activated event 里面使用messagebox的问题
blucecat
2004-03-25 11:00:29
一段最简单的代码:
private void Form1_Activated(object sender, System.EventArgs e)
{
MessageBox.Show("ABC");
}
为什么运行后点messagebox的确定按钮messagebox会反复弹出?谢谢回答!
...全文
40
11
打赏
收藏
在form 的activated event 里面使用messagebox的问题
一段最简单的代码: private void Form1_Activated(object sender, System.EventArgs e) { MessageBox.Show("ABC"); } 为什么运行后点messagebox的确定按钮messagebox会反复弹出?谢谢回答!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blucecat
2004-03-29
打赏
举报
回复
sumtec(Psydian) :
实在对不起,都怪我没说清楚,这下对了,非常感谢你的不厌其烦
sumtec
2004-03-28
打赏
举报
回复
晕!你完全没有搞清楚什么是Active,Active是激活的意思!如果你只想第一次加载的时候显示对话框,那么就应该用Load事件,如果你想在显示出来的时候弹出对话框,那就应该用VisibleChanged事件。
你本身的问题没有问清楚,又用错东西了,那我回答的也自然不是你想要的咯。
你应该仔细研究一下,Form有一些什么事件,分别是什么意思,不要随便乱用。
blucecat
2004-03-28
打赏
举报
回复
我没断章取义呀,只是你起初的代码没有this.Activate()嘛
现在对了,不用什么this.focus了
busyActivating = false;这句还是应该去掉,否则在form第二次actived的时候,messagebox又会弹出,这是我不想看到的
blucecat
2004-03-25
打赏
举报
回复
最后一句busyActivating = false;必须删掉,否则busyActivating毫无作用
现在的问题是MessageBox.Show("ABC")后点确定form居然要失去焦点,我不得不在这之后加一句this.focus();这样的效果真是糟透了(form会非常厉害的闪烁一下)
blucecat
2004-03-25
打赏
举报
回复
非常谢谢 sumtec(Psydian) :
我是想在from显示出来后给一个messagebox,我觉得应该是在这个事件里面实现,form got focus应该是Enter event吧?
要实现我的想法没有其他办法了吗?
sumtec
2004-03-25
打赏
举报
回复
不知道你是想验证Activated是否可用呢?还是就是要弹出一个对话框?如果非要弹出一个对话框,那么:
private bool busyActivating;
private void Form1_Activated(object sender, System.EventArgs e)
{
// 这几句话放在开头
if (busyActivating)
{
return;
}
busyActivating = true;
// 其它的什么代码(不弹出窗口)
...
// 凡是弹出窗口的地方,加上下面这两句话。
MessageBox.Show("ABC");
Application.DoEvents();
// 这句话放在最后面
busyActivating = false;
}
sumtec
2004-03-25
打赏
举报
回复
当然,因为你弹出了MessageBox,这个窗口就失去焦点了,等你点“确定”之后,窗口再次被激活,于是就再次进入这个事件,然后再次弹出MessageBox……
sumtec
2004-03-25
打赏
举报
回复
好了,这个经过测试的了,你自己是一下吧,敬请完全拷贝,不要漏了任何一句,尤其是DoEvents();
private bool busyActivating;
private void Form1_Activated(object sender, System.EventArgs e)
{
// 这几句话放在开头
if (busyActivating)
{
return;
}
busyActivating = true;
this.Activate();
// 其它的什么代码(不弹出窗口)
// 这个例子就不写什么罗嗦的代码了。
// 凡是弹出窗口的地方,加上下面这两句话。
MessageBox.Show("ABC");
Application.DoEvents();
// 再弹出一次,保证没问题!
MessageBox.Show("123");
Application.DoEvents();
// 这句话放在最后面
busyActivating = false;
}
sumtec
2004-03-25
打赏
举报
回复
楼主:
请你仔细看看我给你的代码,我想你很可能是断章取义了。你在MessageBox后面没有写Application.DoEvents(); 吧?后面的那个busyActivating = false; 是必需的,否则下一次选中这个窗口就不会显示对话框了!
我想你可能遇到的另外一个问题是,第一次显示这个窗口的时候会失去焦点,这个问题可能是.NET Framework的一个瑕疵,这个问题我在研究一下。
jkflyfox
2004-03-25
打赏
举报
回复
如果只想验证一次Activated事件,可以
private bool bFlag=true;
private void Form1_Activated(object sender, System.EventArgs e)
{
if( bFlag==true)
{
DialogResult dr=MessageBox.Show("Good");
if(dr==DialogResult.OK) bFlag=false;
}
}
不过也会点确定后窗口失去焦点,如楼上所说。要加thi.Focus();
jkflyfox
2004-03-25
打赏
举报
回复
如果是开始时显示一次,load事件就可以的。
如果要获得焦点就显示,Enter事件好像不行。
Win
Form
Event
:
Activated
Dead Cycle
我对Win
Form
的Load &
Activated
& Shown &
Form
Closing &
Form
Closed 事件进行了解,在事件处理函数中,用
MessageBox
输出该事件名称。 事件
Activated
的处理函数如下: [code=csharp] private void Label
Form
_
Activated
(object sender,
Event
Args
处理 Win
Form
s 事件和事件模块
第八章 用户界面(四) 处理 Win
Form
s 事件和事件模块 在第七章我们讨论过事件(
Event
)模块,它能够用于处理 Win
Form
s 中的事件。当处理 Win
Form
s 中的事件时,通常会遇到没有完全符合想要事件的情况。例如,当鼠标的左、右键单击时会触发MouseButton 事件,但是,我们可能只希望它响应鼠标左键的单击。这时,用
Event
.filter 函数可
【愚公系列】2023年10月 Win
form
控件专题 2023秋招Win
form
高频面试题
如果GroupBox与
Form
的左、上、右是有一定间距的,那Dock属性就无法做到了,这时就要考虑Anchor属性了,设置GroupBox的Anchor属性为:Left,Top,Right, 然后再调整好控件与
Form
左、上、右的间距就OK了。因为Win
form
应用程序是单线程的。
使用
DataBing可以实现自动绑定,为
Form
定义一个实体模型,将控件的属性与实体模型中的属性绑定在一起,当页面控件的属性值改变时,模型中的属性值自动更新,不需要一一再去获取;当模型中的属性值修改时,控件的属性值也会自动更新。
Cheggit解析器模块分析
网页解析器接口定义View Code public interface IParser { #region
Event
s
event
Activated
Event
Handler
Activated
;
event
De
Activated
Event
Handler De
Activated
; #endregion #reg...
Windows窗体应用程序设计小一
首先创建一个简单的windous窗体应用程序,名为
Form
1 一,windows 窗体应用程序是由控件组成的,控件是可以重复
使用
的类或组件
MessageBox
Buttons枚举值及其说明 成员名称 说明
MessageBox
Buttons.AbortRetryIgore 消息框包含“终止”,“重试”,...
C#
110,571
社区成员
642,565
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章