TextBox在拖到Form上时,VS.NET会给它的Text属性分配一个默认值,例如第一个TextBox为textBox1,第二个为textBox2,以此类推,我想让该值成为其他值,这样就不用每建立一个TextBox就要改一次,要如何做呢?

解决方案 »

  1.   

    你是无法改变的,除非你继承TextBox写自己的控件
      

  2.   

    就算继承TextBox,可它还是自动设置成新类的名称加数字序号啊
      

  3.   

    我倒
    无论你把那个值改成什么你都是要改的啊
    因为你的TextBox的值不可能都一样吧
    既然这样又何必在意它的初始值是什么呢?
      

  4.   

    我设计了一个专门输入货币类型数据的TextBox,我只是想让它在建立时默认值为“0.00”,而不是类名称。
      

  5.   

    既然是重写的控件,那就可以在你的新textbox类里加一条语句改掉它。
      

  6.   

    我想大家可能没有理解我的问题,也怪我没阐述清楚:
    我在设计一个公司用的软件,里面涉及到大量的数据录入操作,因此我对TextBox控件进行了重新包装,设计了几个功能专有化的TextBox,其中有只能输入整数、只能输入双精度值、只能输入货币值以及可以输入任意文本的TextBox,并且他们都带有一个EditValue属性,保存了将TextBox文本转换成相应的数据类型后的值,例如只能输入整数的TextBox的EditValue保留的用户输入的整数值(这主要是为了方便与数据库数据对应,省去了在软件的各处重复数据转换的编码)。
    既然各个不同的TextBox管理不同的数据类型(这里目前至少有三种:整型,双精度,字符串),当然就要考虑基本的数据验证问题,这里只是“基本”的验证,即数字类型的TextBox不能输入非法的字母等符号,对于业务逻辑要求的验证,只能在TextBox之外进行了。
    可在设计数据录入界面时发现一个问题,就是在把自己设计的TextBox控件拖放到窗体上时,设计环境会把TextBox的Text属性设置成控件类名加上数字序号,这我想大家是很熟悉的了,对于只能输入文本类型的TextBox来讲,这问题不大,可对数字类型的TextBox就会有些问题,TextBox中的验证代码会指出这是非法的输入,当然我可以在设计时修改这个值,但数据录入的界面很多,每个界面上又有很多这样的TextBox,修改值的工作就成了繁琐的事,而且设计环境自动生成代码中,为Text属性赋值的代码肯定是在建立TextBox的实例之后,因此在新的TextBox类初始化代码中设置初始值肯定是没用的。
    所以我就想到了对设计环境的编程,可在System.ComponentModel和System.Windows.Forms.Design名字空间里也找不到什么答案,所以想问问大家能不能给出出主意,谢谢了。
      

  7.   

    还是有办法的,首先在你继承的TextBox的构造函数里加代码Text = "0.00",然后override继承类里的OnTextChanged,在其中判断当前的Text是否为空和非法字符串,如果是的话就将Text设置为"0.00",这样TextBox一出现就会显示0.00。其实只不过“将计就计”,让TextBox的值在一初始化就改一次,然后达到目的。