2012-09-25 57 views
0

我有一个winform,我有一个文本框,将占用多达14个数字。现在,如果用户输入少于14,我必须用0填充其余的字段。例如。如果用户10个号码我必须包括4个0以使其14在c#winform中填充0(零)字符串的空字段?

+0

更多0在左边还是右边? –

+0

之后的原始数字 – Drone

回答

4

更改文本框的MaxLength属性14后你得到的Text性质,用途,该PadLeft,或PadRight方法在String类。

void textBox_LostFocus(object sender, EventArgs e) 
{ 
    var text = this.textBox.Text; 
    text = text.PadLeft(14, '0'); 

    this.textBox.Text = text; 
} 

结果

var value = "abcd"; 
var leftPadded = value.PadLeft(14, '0'); // <- "0000000000abcd" 
var rightPadded = value.PadRight(14, '0'); // <- "abcd0000000000" 

您可能还需要考虑使用类。

+0

这应该在textbox的textchanged事件中使用? – Drone

+0

我已经写在文本框'var text = atxt.Text;的textChanged事件; var right = text.PadRight(14,'0');'但是我没有得到0的字符串 – Drone

+1

@Drone好问题。如果您在“TextChanged”事件的处理程序中执行此代码,只要键入1个字符或后退1个字符,文本将被替换为14个字符的版本。我不会在'TextChanged'处理程序中执行它,而是会丢失焦点事件处理程序:'Leave'或'LostFocus'。 – Dan

0
textbox.TextChanged += new EventHandler(textbox_TextChanged); 

private textbox_TextChanged(Object sender, EventArgs e) { 
    textbox.Text = textbox.Text.PadLeft(14, '0'); 
} 
0

如果您使用数据绑定,并且如果您只是想在文本框的显示中添加数字,而不是在基础数据源中,则可以在创建自己的文本框衍生时使用标准.net格式,如here 。可能派上用场。

+0

不,我希望数据字符串中的那些0不在显示时间 – Drone