2012-05-11 23 views
1

假設你有一個組合框和一個文本框。數據綁定組合框和它們之間的文本框有可能嗎?

組合框包含項目列表,我想將文本框「文本」屬性綁定到當前的組合框選擇。

在WPF中可以做到這一點,但我還沒有在WinForms中找到方法。

有沒有辦法,或者是WinForms太有限了?

注:

  • 我知道我可以使用WPF來代替,但該項目已在WinForms和改寫是不可能的。
  • 我在問組合框和文本框,但這可能是其他組合。
  • 我正在尋找一種方法來完成它從設計時間它儘可能。
+0

如果您將它們綁定到同一個對象(實現正確的可觀察接口),那麼更改通知應該會導致該值自動傳播到對象,然後傳遞給另一個控件,而無需額外的代碼。 –

+0

@Ben,雖然在WinForms中有數據綁定功能,但它並不像WPF那樣舒適。我更喜歡與Machinegon的建議相同的解決方案。 –

+0

@BenVoigt:你不需要中間對象。我認爲我可能需要使用一箇中間對象(某種內部DTO),但是如果一個簡單的事件就足夠了,那會是什麼意思呢?我能夠弄清楚用於「綁定」對象的屬性組合。 – IAbstract

回答

2

是可以綁定文本框的項目(Text)所選項目的文本:

public partial class Form1 : Form { 
     Binding binding; 

     public Form1() { 
     InitializeComponent(); 

     binding = new Binding("Text", comboBox1, "Text"); 
     textBox1.DataBindings.Add(binding); 
     } 
    } 
+0

好吧,這有效,但它不能從設計器UI完成。 –

+0

我想回答你的一個問題:*我正在尋找一種方法來從設計時間儘可能地做到這一點* ...沒有編寫自己的控件,它增加了一些設計師支持,它可能是不可能的。 WinForms有限制。 – IAbstract

+0

我接受你的答案,因爲它更接近於技術的可行性。 –

2

您可以在組合框上添加onSelectedIndexChange事件處理程序,並修改其中的文本框形式。

+0

這將是我的方式。與WPF不同的是,將一個GUI控件「綁定」到另一個GUI控件的功能不是內置的;你必須與事件處理程序掛鉤才能完成工作。還是很有可能的。 – KeithS

+1

活動將一如既往,但這不是數據綁定。 – IAbstract

0

這裏你去:這些行創建一個代表,其開始調用是否選擇的索引已在項目下更改。此後,它設置textboxs,文本屬性,從在組合框中選擇的組合框:)

  TextBox txtbox = new TextBox(); 
      ComboBox cob = new ComboBox(); 
      cob.SelectedIndexChanged += new EventHandler(delegate(object sender, EventArgs e) { if (cob.SelectedIndex > -1) txtbox.Text = cob.Items[cob.SelectedIndex].ToString(); }); 
+1

如果沒有選擇項目,這將導致異常。 –

+0

只需一秒鐘。更新它比.... thada! =)完成 – dotTutorials