2016-02-29 34 views
-2

我用於在輸入所有內容後用按鈕生成永久代碼。 像這樣:將文本框和日期時間選擇器的子字符串文本輸入到掩碼框中

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

你說得對,當使用textchanged事件,但你不添加檢查'mskCodePer.Text'的長度。 – Sakura

回答

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();} 
相關問題