文本框和日期时间选择器的子串文本到掩码框

时间:2016-02-29 01:16:11

标签: c# winforms substring

在输入所有内容后,我用按钮生成永久代码。 像这样:

mskCodePer.Text =
    txtNom.Text.Substring(0, 3) +    
    txtPrenom.Text.Substring(0, 1) + 
    dptNaisc.Text.Substring(8, 2) + 
    dptNaisc.Text.Substring(4, 4) + 
    dptNaisc.Text.Substring(2, 3);

但我的老师强迫我这样做,以便在我打字时自动发生,但我不明白怎么做。

我尝试编写textchanged事件,但每次只输入一个字母时,它会崩溃并告诉我已生成ArgumentOutOfRangeException。

1 个答案:

答案 0 :(得分:1)

您必须为这些文本框处理TextChanged事件。

在单独的方法中分隔maskbox文本更新代码,并为每次TextBox文本更改调用此函数/方法。

public void UpdateMask()
{
    mskCodePer.Text =
    (txtNom.Text!=null && txtNom.Text.Length > 2)? txtNom.Text.Substring(0, 3): string.Empty +
    (txtPrenom.Text!=null && txtPrenom.Text.Length > 0)? txtPrenom.Text.Substring(0, 1): string.Empty +    
    (dptNaisc.Text!=null && dptNaisc.Text.Length > 9)? dptNaisc.Text.Substring(8, 2): string.Empty +    
    (dptNaisc.Text!=null && dptNaisc.Text.Length > 7)? dptNaisc.Text.Substring(4, 4): string.Empty +    
    (dptNaisc.Text!=null && dptNaisc.Text.Length > 5)? dptNaisc.Text.Substring(2, 3): string.Empty ;    
}


// keep below logic in form_load or relevant event.

txtNom.TextChanged += (s,e) => {UpdateMask();}
txtPrenom.TextChanged += (s,e) => {UpdateMask();}
dptNaisc.TextChanged += (s,e) => {UpdateMask();}
相关问题