解决方案 »
- VS2010无法加载项目
- C#连接数据库字符串的问题
- 创建文件夹
- 已添加项。字典中的关键字
- 请教:在子窗体中如何设置主窗体中的数据??
- HtmlPage.Window.Navigate打开指定页面
- 重写控件有几个不懂
- 小妹初学C# 现在做一个winform程序 不能把datagridview显示的数据导入到excel 求大侠帮助 急!
- textBox中不填数据时显示0.00,填入数据后,按小数点右对齐,没有小数位则自动补.和两位小数00,整数部分每三位有分节号.如何实现?
- C#Web窗体中如何取得TextBox中当前的光标位置?
- winForm1里的dataset1 如何能在winForm2直接用?
- 如何printScreen并获得这个图片?
我做了一个自定义控件,实现这样一个效果,判断控件的text属性是否可以为空,通过一个属性来设置,当我设置成text控件不能为空的时候,当这个控件失去焦点的时候(或者是说当窗体的焦点从这个控件,移到另一个控件上)如果text为空,MessageBox.show("不能为空"), 但是有一种特殊情况除外,就是我点击这个控件所在窗体上的一个按纽(这个按纽是关闭这个窗口),就不要提示这个“不能为空”的信息了。
我的代码:
我是把判断放在onleave事件中的,
这里是不是有问题:
会先触发OnLeave事件
所以messagebox先显示出来
退出的消息根本收不到
除非你先在textbox里面随编写几个字符
然后才能退出去
但是又不知道怎么做,大家救命!
{
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(msg.WParam.ToInt32() == (int) Keys.Tab)
{
SendKeys.Send("{Enter}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
上面一段代码的意思是将按tab键的效果等同于按了回车键
然后在private void textBox3_KeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar == (char)13)
{
}
}
在按回车键的时候判断是否为空,如果为空则提示这样就不
但是鼠标呢,用鼠标来切换焦点当为空的时候不是不能出现判断么,
在MouseDown中判断是否点击了退出按钮
是则设置为true
然后在OnLeave中如果该变量为true则不作处理
其实在DELPHI里有这样的控件的,
在vb里面就是这么做的
不过补充一下:
“在OnLeave中如果该变量为true则不作处理
否则将变量复位为false”
至今没有找到更好的方法
if(textbox.Text.Trim() == "")
{
MessageBox.Show("不能为空,请输入");
}
不知道是否对你有帮助
如果不满足那就抱错,我把一个按牛的TABINDEX设置为0这样就不会去判断了,呵呵,不好意思比较土了点,但是我现在有个问题是怎么样可以得到这个一个字定义控件所在窗体上所有的控件的代码。完成了这一点我这个控件就完成了,我到时候可以把代码拿上来 。
谢谢
你做的好辛苦,辛苦了!!!