2015-03-02 80 views
0

我如何根據2個其他文本框的輸入自動填充文本框?如何在C#中自動填充文本框?

例如:

姓:約翰

名字:史密斯

別名:JSmit(注意到在姓氏第一初始和第一4個字母)

暱稱:jsmith的(注意到第一初始的,+姓氏)

我該如何在C#中編寫這個?它是在Visual Studio 2013中的Windows窗體

我認爲暱稱我可以使用txtNickname.text = *一些奇怪的A^@#%@ Thing * + txtLastname.Text;

回答

0
txtNickname.Text = txtFirstName.Text[0] + txtLastName.Text; 
txtAlias.Text = txtFirstName.Text[0] + txtLastName.Text.Substring(0, 4); 

可能需要添加一些服飾的字符串長度。 :)

+0

這個偉大的工程。我唯一的問題是,如何讓文本框顯示別名和暱稱,因爲它們被鍵入? – JT082014 2015-03-02 14:59:02

+0

你可能會做類似於@Binkan Salaryman建議的東西。或者您可以使用txtFirstName和txtLastName文本框的文本更改事件。你知道如何使用這些嗎?如果沒有,我可以在這裏爲你評論 – 2015-03-02 15:11:11

0

您試圖在Windows窗體中實現數據綁定 - 您可以看看this Tutorial。作爲替代,你可以用WPF

做到這一點很容易下面是Windows窗體一些樣品WPF樣式代碼:

public partial class Form1 : Form, INotifyPropertyChanged { 
    public string FirstName { get { return txtFirstName.Text; } set { txtFirstName.Text = value; } } 
    public string LastName { get { return txtLastName.Text; } set { txtLastName.Text = value; } } 
    public string NickName { get { return txtNickName.Text; } set { txtNickName.Text = value; } } 

    public Form1() { 
     InitializeComponent(); 
     UpdateNickName(); 
     txtFirstName.TextChanged += (s, e) => FirePropertyChanged("FirstName"); 
     txtLastName.TextChanged += (s, e) => FirePropertyChanged("LastName"); 
     txtNickName.TextChanged += (s, e) => FirePropertyChanged("NickName"); 
     PropertyChanged += Form1_PropertyChanged; 
    } 

    void Form1_PropertyChanged(object sender, PropertyChangedEventArgs e) { 
     switch(e.PropertyName) { 
      case "FirstName": 
      case "LastName": 
       UpdateNickName(); 
       break; 
     } 
    } 

    void UpdateNickName() { 
     if(FirstName.Length > 1 && LastName.Length > 4) { 
      NickName = FirstName.Substring(0, 1) + "" + LastName.Substring(0, 4); 
     } else { 
      NickName = ""; 
     } 
    } 

    public void FirePropertyChanged([CallerMemberName] string property = "") { 
     if(PropertyChanged != null) { 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
}