文本框的子字符串文本和遮罩框的日期时间选取器

本文关键字:文本 时间 日期 选取 字符串 | 更新日期: 2023-09-27 18:36:42

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

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);

但是我的老师强迫我以一种在我打字时自动发生的方式做到这一点,但我不明白怎么做。

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

文本框的子字符串文本和遮罩框的日期时间选取器

您必须为这些文本框处理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();}