在输入所有内容后,我用按钮生成永久代码。 像这样:
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。
答案 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();}