[英]How can I bind a Winform textbox to a class property?
我已經在Stack Overflow和其他地方閱讀了許多問題,這些問題描述了如何將文本框綁定到類,但是在編譯時如果沒有收到VS的錯誤,我似乎甚至無法使基礎工作。
(1)我要完成的是顯示一個類的屬性的文本。
(2)當用戶修改該文本時,我希望該屬性自動更新。
不幸的是,我什至無法超越(1)。
班級:
class BookProperties : INotifyPropertyChanged
{
private string _bookTitle;
public string bookTitle { get { return _bookTitle; } set { SetField(ref _bookTitle, value, "bookTitle"); } }
#region handle property changes
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetField<T>(ref T field, T value, string propertyName)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
#endregion
}
類的初始化器:
BindingList<BookProperties> bookProperty = new BindingList<BookProperties>();
與文本框的連接:
textBox1.DataBindings.Clear();
textBox1.DataBindings.Add("Text", bookProperty, "bookProperty.bookTitle");
我也嘗試過這個:
textBox1.DataBindings.Clear();
textBox1.DataBindings.Add("Text", bookProperty, "bookProperty[0].bookTitle");
Visual Studio引發以下錯誤:
無法創建fieldbookProperty的子級列表。
開始編輯:嘗試這段代碼,我建議從第三個參數中刪除其他元素。
bookProperty.Add(new BookProperties(){bookTitle="C#"});
textBox1.DataBindings.Add("Text", bookProperty[0], "bookTitle");
現在,我收到此錯誤。 我以前收到過它,正在尋找解決方案,但認為對我來說太籠統了,無法弄清楚我到底在做什么錯。
System.Windows.Forms.dll中發生了類型為'System.ArgumentException'的未處理異常
附加信息:這將導致集合中的兩個綁定綁定到同一屬性。
結束編輯
我開始認為我的方法存在根本上的錯誤,因為我已經看到人們說的類似代碼有效,所以我希望有人可以告訴我我做錯了什么。 請注意,這是Windows窗體問題,而不是XAML。 謝謝。
已修正對不起,最后一次編輯。 事實證明,我以前曾嘗試使用VS設計器將文本框手動鏈接到數據源。 刪除該數據源后,一切正常。 感謝您的幫助!
嘗試這個:
bookProperty.Add(new BookProperties(){bookTitle="C#"});
textBox1.DataBindings.Add("Text", bookProperty[0], "bookTitle");
第二個參數是應該顯示的源,第三個參數是源類的屬性。 還要確保bookProperty列表中有項目。
希望會有所幫助。
確保您正在捕獲更改:
textBox1.DataBindings.Add("Text", bookProperty[0], "bookTitle", true, DataSourceUpdateMode.OnPropertyChanged);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.