C#winform 如何设定标志处理当前未完成操作?

happychou 2009-04-09 09:19:29
现在碰到这样一个问题:
就是程序上有一些操作,比如界面上有几个TextBox,需要用户输入,然后保存用户输入的数据在文本文件上。
若是用户没有输入完全,就转向其他的界面,或者未点击保存操作就点击其他的操作,此时应该需要一个事件进行处理,该怎么处理啊?比如任务栏的颜色变化或者弹出对话框提示等等。。。
有没有大侠做过此类事件给指点指点。谢谢
(我用的是布尔变量,检查所有的TextBox是否为空,然后处理,但是效果很差)
...全文
259 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2009-04-09
  • 打赏
  • 举报
回复
MouseLeave 鼠标离开控件

Leave 当控件不在是活动控件的时候触发
winform中要自己写方法进行校验的
一般顺序:
1、textbox gotfocus后注册事件textbox leave
2、textbox leave后校验是否成功,之后解除和这个textbox挂钩的leave事件
happychou 2009-04-09
  • 打赏
  • 举报
回复
各位还有没有其他的好方法?
happychou 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xufzu123 的回复:]
在TextBox失去焦点的事件处理方法中判断
[/Quote]
有很多的TextBox,每个事件都要写吗?
xufzu123 2009-04-09
  • 打赏
  • 举报
回复
在TextBox失去焦点的事件处理方法中判断
zzxap 2009-04-09
  • 打赏
  • 举报
回复
if(DOCUMENT.getelementByid("textBox1").value=="")
{
DOCUMENT.getelementByid("textBox1").Focus();
return false;
}
aa37742698 2009-04-09
  • 打赏
  • 举报
回复
如果点击保存 bool flag=true; 否则bool flag=false; 然后点击其他按钮前判断下就OK了
mawering 2009-04-09
  • 打赏
  • 举报
回复
你可以在别的按钮上加上对TextBox.Text的判断,为空则弹出提示;
也可以通过来控制焦点来解决,当打开别的窗口时,当前这个Form失去焦点就判断一下TextBox.Text的值,为空则弹出一个提示.

liang4571231 2009-04-09
  • 打赏
  • 举报
回复
//如果你希望在窗体Form1(如最小化,焦点移至其他窗体)的时候也触发此事件,则
this.TextBox1.LostFocus+=new EventHandler(TextBox1_LostFocus);//注册事件,写在窗体构造函数中

void TextBox1_LostFocus(object sender,EventArgs e)
{
//写你的查询逻辑
}
否则可以用Leave事件
private void textBox1_Leave(object sender, EventArgs e)
{
MessageBox.Show(this.textBox1.Text);
}
liang4571231 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 happychou 的回复:]
引用 7 楼 wf5360308 的回复:
这样提示:
if (this.txb1.Text.Trim() == "")
{
MessageBox.Show(this, "提示信息!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txb1.Focus();
return;
}

恩,我也是这么写的,但是无法获得用户点击其他按钮的事件啊
比如:用户未点击保存,然后又点击其他的按钮,这个事件…
[/Quote]

你的想法好像不是很科学,但如果真的是这样的话,你就把上面的代码重构成一个函数,在每个按钮的单击事件中都调用这个函数,但单机的是TextBox时不能调用,否则你就没法往下写了
happychou 2009-04-09
  • 打赏
  • 举报
回复
现在的主要问题是按钮转移时(点击其他的按钮)和当前窗口转换时的事件如何获取。。。
liang4571231 2009-04-09
  • 打赏
  • 举报
回复
基本上是点击保存按钮的时候判断各个TxtBox控件是否为空,为空则弹出提示框,MessageBox.show();
wts_net 2009-04-09
  • 打赏
  • 举报
回复
学习
ztenv 2009-04-09
  • 打赏
  • 举报
回复
可以把条件做为一个集合来处理,放到一个list中,当向下一步时,先判断此集合的条件都是都为真,如果不为真则说明条件不成熟,需要继承在当前界面操作;
happychou 2009-04-09
  • 打赏
  • 举报
回复
在线等解决。。。。。
happychou 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wf5360308 的回复:]
这样提示:
if (this.txb1.Text.Trim() == "")
{
MessageBox.Show(this, "提示信息!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txb1.Focus();
return;
}
[/Quote]
恩,我也是这么写的,但是无法获得用户点击其他按钮的事件啊
比如:用户未点击保存,然后又点击其他的按钮,这个事件怎么获得啊?
冷月孤峰 2009-04-09
  • 打赏
  • 举报
回复
这样提示:
if (this.txb1.Text.Trim() == "")
{
MessageBox.Show(this, "提示信息!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txb1.Focus();
return;
}
lee118 2009-04-09
  • 打赏
  • 举报
回复
忘写了一句,应该在在判断是否为空之前,先判断这个控件的TAG值标志的是否是不可为空
happychou 2009-04-09
  • 打赏
  • 举报
回复
自己顶。。。
lee118 2009-04-09
  • 打赏
  • 举报
回复
可以使用控件的TAG值表示那个控件不可为空
在你点击确定按钮的时候,把窗体内的控件都循环判断一下就行了
foreach(control ctrl in this.controls)
{
if(ctrl.Text.Trim() == string.empty)
{
MessageBox("");
ctrl.Focus();
}
happychou 2009-04-09
  • 打赏
  • 举报
回复
那如果一个界面上有很多的TextBox,岂每个不是都要写?
还有就是用户如果点击其他的界面的话,我使用的是Active属性,效果也不好。
加载更多回复(7)

111,126

社区成员

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

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

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