textbox不输入即为零如何设置,同时鼠标显示单位

zhuhuanlai 2017-02-07 04:57:46
大神好!

请教两个问题,我有个小程序,界面有20个左右的输入量(textbox控件)。
我想实现以下功能,请帮忙指点:

1、20个textbox控件中希望不输入时默认为零,输入时即为输入值。
我不想用以下的方式,一行一行代码的写(每个textbox得写两行),请教有没有更好的方法,能把所有textbox控件全部实现。
X.TA_C = Convert.ToDouble(textBox1.Text.Trim());
if(TextBox1.text=="")
{TextBox1.text="0";}


2、我想实现鼠标移动到对应textbox控件上方时,能显示单位,请问下如何实现,最好帮忙给出代码。

3、我还想实现按TAB键实现各个textbox控件的顺序切换,请问如何实现,非常感谢!
...全文
374 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
数值初始化也是如此,例如
var lst = new List<TextBox> { textbox1, textbox2, txt张三 };
foreach (var c in lst)
{
    if (c.Text.Trim() == string.Empty)
        c.Text = "1";
}
如果 lst 多个地方重复使用,那么你可以
public static void Ha(List<TextBox>  lst)
{
    foreach (var c in lst)
    {
        if (c.Text.Trim() == string.Empty)
            c.Text = "1";
    }
}
将 lst 封装为参数。 总之,就是只写一次代码,不要重复 copy 代码,这样就能产生“设计模式”。
  • 打赏
  • 举报
回复
实际上在窗体/用户控件设计界面和属性界面去绑定事件,调用同一个过程(而不需要额外copy代码),也一点都不费劲。
  • 打赏
  • 举报
回复
引用 楼主 zhuhuanlai 的回复:
我不想用以下的方式,一行一行代码的写(每个textbox得写两行),请教有没有更好的方法,
不写“两行”,但是你最起码要写一行。 手工的东西,都可以改为编程的。根据不同时期的需求而变(例如你不关心更直观设计,而是只关心自己手疼的时候,宁可非常抽象的时候)。 例如代码
var lst = new List<TextBox> { textbox1, textbox2,  txt张三 };
foreach(var c in lst)
    c.KeyDown += myMethod;
这就为一批 TextBox 的 KeyDown 注册了同一个处理过程。
crystal_lz 2017-02-08
  • 打赏
  • 举报
回复
要么 全部控件绑定同一个事件 要么重写控件 http://st233.com/blog.php?id=11
cpycpy000 2017-02-08
  • 打赏
  • 举报
回复
第一个用通用的Leave事件即可 窗体第一次加载时的0.就直接在设计窗体的时候直接写进控件里, 然后所有TextBox控件绑定到同一个Leave事件 :TB_Leave()

private void TB_Leave(object sender,  EventArgs e)
{
      TextBox tb = (TextBox)sender;
      if(tb.Text.Trim() == "")
      {
            tb.Text = "0";
      }
}
蒹葭残辉 2017-02-08
  • 打赏
  • 举报
回复
可以用foreach进行遍历,如你要遍历的是TextBox,那么你就可以这么写。

foreach(Control c in this.Controls)
{
       if(c is TextBox)
       {
             TextBox textBox=(TextBox)c;
             //此处写你要对此控件进行的操作
       }
}
xuggzu 2017-02-07
  • 打赏
  • 举报
回复
使用通用代码即可,代码中判断sender属于哪个textbox(可以用tag属性)。 提示单位用tooltip。 tab切换设置tabindex即可。
0 1看天下 2017-02-07
  • 打赏
  • 举报
回复
第一个 貌似写一个委托事件发送消息吧,万一清空呢
xiaoyu5425 2017-02-07
  • 打赏
  • 举报
回复
引用 1 楼 Chinajiyong 的回复:
1.加载(Form_Load里)的时候,把text设置为0 2. 在文本框的MouseEnter或者MouseMove,MouseLeave事件里去写 3.设置控件的TabIndex属性
补充2 devexpress textedit有个tooltip属性直接写上去就好了
冷场王 2017-02-07
  • 打赏
  • 举报
回复
2 如果是要悬浮提示可以加上一个tooltip控件,在load里写上 ToolTip1.SetToolTip(label1, "单位");
EnForGrass 2017-02-07
  • 打赏
  • 举报
回复
1.加载(Form_Load里)的时候,把text设置为0 2. 在文本框的MouseEnter或者MouseMove,MouseLeave事件里去写 3.设置控件的TabIndex属性

110,502

社区成员

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

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

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