2011-09-06 24 views
1

如果我创建两个TextBoxes,可能会有这种情况。获取另一个TextBox VISUAL C的值的TextBox#

当第一个文本框从输入被修改时,第二个文本框被设置为只读,并且其值将根据您在第一个文本框中写入的内容进行更新。

这就像当我在这里发布在stackoverflow还有一个只读区域,跟随我输入(预览窗口)。 :)) 谢谢!!!

+0

你可以张贴一些代码,所以我们可以看到,到目前为止你有什么? –

+2

此外,这是一个Web应用程序或Windows应用程序? –

+1

是的,这是可能的,但很高兴看到你迄今为止尝试过的东西。 –

回答

1

如果它是双赢应用程序,那么它非常简单。试试这个:

private void txtFirstTextBox_TextChanged(object sender, EventArgs e) { 
     if (string.IsNullOrEmpty(txtFirstTextBox.Text)) { 
      txtSecondTextBox.Clear(); 
      return; 
     } 
     txtSecondTextBox.Text = txtFirstTextBox.Text; 
    } 

希望得到这个帮助。

+0

请注意,s.amani在此处提供的解决方案适用于WinForms和WPF,但如果您实际使用WPF,则还有更多“WPF-y”解决方案可供使用。 – Kevek

+0

@ kevek-是的,它适用于WPF和Win-Form应用程序。但最好只在Win-Forms中使用。 WPF具有您所描述的出色绑定特性。 – saber

+0

只是为了清楚说明,以防OP或其他人不知道 – Kevek

0

我应该注意:如果您使用WPF作为用户界面,这是一个解决方案。

是的,这就是,如果你有可能易行,例如第一个文本框:

<TextBox x:Name="FirstBox"/> 

您可以通过绑定到该文本框的内容:

<TextBox x:Name"SecondBox" Text="{Binding ElementName="FirstBox", Path="Text", UpdateSourceTrigger=PropertyChanged}" IsEnabled="False"/> 

而当第一个文本框的变化,第二个应该效仿。这一切都是通过绑定自动处理的,它连接到名为“FirstBox”的TextBox的Text属性。通过将IsEnabled属性设置为“False”来禁用第二个TextBox

+0

假设它是WPF,而不是WinForms(但他没有说) –

+0

同意,我编辑了我的答案,在顶部包含该免责声明。 – Kevek

0

由于已经有一个WPF解决方案,并且您没有指定您正在使用的是哪一个,所以我会继续并发布一个WinForms解决方案。

幸运的是,这在WinForms中也相对简单。您只需丝哪些更新第二个文本中的第一个文本框TextChanged事件的处理程序:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    textBox2.Text = ((TextBox)sender).Text; 
} 
+0

我认为没有必要使用Cast对象,何时可以通过其名称访问?对 ? – saber

+0

@ s.amani - 如果您直接从事件处理程序访问textBox1,则不需要投射。在这种情况下,我编写了事件处理程序,以便它可以用于通过sender参数获取对TextBox的引用的多个文本框。在那种情况下,它肯定需要投射。 –

+0

您的意思是:textBox2.Text = textBox1.Text;是的,这也会起作用。 –