2011-09-06 62 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;是的,這也會起作用。 –