2014-01-13 47 views
2

我在jQuery中遇到過類似的問題(找到了here),我試圖根據自己的需要在C#中對其進行修改,但是我沒有設法做到這一點。我想要的是標題所說的內容,我希望用戶在一個文本框中鍵入一些文本,並將結果同時顯示在另一個文本框中。這是我的工作(顯然,它不起作用),我試圖將第一個文本框的KeyUp事件的參數傳遞給第二個事件的相應事件,但它看起來並不那麼容易:同時輸入兩個文本框

public mainFrm() 
{ 
    InitializeComponent(); 

    this.txtFormat.KeyUp += new KeyEventHandler(txtFormat_KeyUp); 
    this.txtNewFormat.KeyUp += new KeyEventHandler(txtNewFormat_KeyUp); 
} 

private void txtFormat_KeyUp(object sender, KeyEventArgs e) 
{ 
    txtNewFormat_KeyUp(sender, e); 
} 

private void txtNewFormat_KeyUp(object sender, KeyEventArgs e) 
{ 
} 

感謝您的幫助提前。

+0

用戶應該可以輸入兩個文本框?如果用戶輸入第二個文本框會發生什麼? –

+0

用戶將被允許鍵入兩個文本框,是的,但是我上面發佈的內容應該只在用戶鍵入第一個時纔會發生。 –

回答

2

這將使兩個文本框同步:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     textBox1.TextChanged+=new EventHandler(textBox_TextChanged); 
     textBox2.TextChanged+=new EventHandler(textBox_TextChanged);    
    } 

    void textBox_TextChanged(object sender, EventArgs e) 
    { 
     string text=(sender as TextBox).Text; 
     if(!textBox1.Text.Equals(text)) { textBox1.Text=text; } 
     if(!textBox2.Text.Equals(text)) { textBox2.Text=text; } 
    } 

} 
+0

非常感謝,正是我想要的。 –

9

要做到這一點,最簡單的方法是隻聽TextChanged事件一個TextBox和轉發當前狀態到另

public mainFrm() 
{ 
    InitializeComponent(); 

    txtFormat.TextChanged += OnTextChanged; 
} 

private void OnTextChanged(object sender, EventArgs e) 
{ 
    txtNewFormat.Text = txtFormat.Text; 
} 
+0

出於好奇,這個解決方案是否會更新每個字母的字母,或僅在第一個文本框中的文本完全鍵入之後? – jmstoker

+0

但是,每次第一次修改完成時,這將完全覆蓋第二個文本框中寫入的內容。 OP必須小心。 –

+0

@jmstoker每次更改「txtFormat」中的文本時都會更新它。所以在每一個信件的按下和複製操作後,它會改變 – JaredPar