2016-06-08 30 views
1

我定義爲這個C#PictureBox.Image的DataBind到物體圖像物業

public class Employee : INotifyPropertyChanged 
{ 
    private Image photo; 


    public Image Photo 
    { 
      get { return photo; } 
      set { photo = value; InvokePropertyChanged(new PropertyChangedEventArgs("Photo")); } 
    } 


    #region Implementation of INotifyPropertyChanged 

    public event PropertyChangedEventHandler PropertyChanged; 

    public void InvokePropertyChanged(PropertyChangedEventArgs e) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, e); 
    } 

    #endregion 

} 

Employee這是我的用法:我已經命名爲pbPhoto和圖片一個PictureBox控制有默認值從我的Resources.Blank,該屬性是事件內的Employee.Photo屬性的數據綁定。

Employee employee = new Employee(); 
this.pbPhoto.DataBindings.Add("Image", employee, "Photo"); 

但它似乎不工作,我得到了這個錯誤信息。

無法將值格式化爲所需的類型。

+0

第二個參數應該包含一個對象,而不是一個類型 – Mono

+0

請檢查修訂後的問題。 –

+0

我沒有看到你實際設置照片屬性的位置。我想你不能設置一個綁定到一個返回null的屬性 – Mono

回答

0

我只是解決基於以上Mono's comment這個問題,

有兩種不同的方法:

首先,結合pbPhoto.Image財產爲對象Photo屬性之前,你有一個默認值分配給employee.Photo因爲我們不能設置一個綁定屬性它返回一個null值。

Employee employee = new Employee(); 
employee.Photo = Resources.Blank; // Initial value. 
this.pbPhoto.DataBindings.Add("Image", employee, "Photo"); 

另一種是設定在Employee構造Photo屬性的初始值。

public Employee() 
{ 
    this.Photo = Resources.Blank; 
} 

然後你可以繼續這個。

// During the program execution the Photo has an initial assigned value. 
Employee employee = new Employee(); 
this.pbPhoto.DataBindings.Add("Image", employee, "Photo"); 
2

這是通過一個非常古老的WinForms數據綁定錯誤行爲其由Binding.FormattingEnabled屬性設置爲true固定引起的(不幸的是,「向後兼容」默認爲false):

this.pbPhoto.DataBindings.Add("Image", employee, "Photo", true); 

如果要默認值時,數據源屬性爲null關聯,則可以使用Binding.NullValue屬性:

this.pbPhoto.DataBindings.Add("Image", employee, "Photo", true, 
    DataSourceUpdateMode.OnValidation, Resources.Blank); 
+0

我剛剛更新了我的問題,這部分解決了我的問題,但是我的'PictureBox'有一個默認的'Image'值,每當我載入窗體時'Image'消失。 –

+0

將'employee.Photo'屬性轉換爲'byte []''對象引用未設置爲對象實例時,我得到了一個錯誤,但我可以通過簡單地將初始映像分配給'employee .Photo = Resources.Blank'基於@Mono在下面的問題評論中的建議。 –