2014-01-13 45 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