程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 控件-DisplayMember 如果自動感知 DataSource 中的字段名稱

控件-DisplayMember 如果自動感知 DataSource 中的字段名稱

編輯:編程綜合問答
DisplayMember 如果自動感知 DataSource 中的字段名稱

做了一個控件,將Label 和 ComboBox 組合在一起,其中 Label 用於顯示標題,ComboBox 與後端數據表的字段相連,顯示字段的內容。控件樣式如下:
圖片說明

現在合在一起的新控件,有屬性 "DataSource" / "DisplayMember" / "ValueMember",該屬性與單個控件中的 ComboBox 中對應屬性完全相同,希望新控件實例化後與原單獨 ComboBox 一樣,能有自動的窗體數據源感知和數據表字段感知功能。經過反復測試, DataSource 能感知窗體中的數據源,設定如下:
[Description("數據源"), Category("數據")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
get { return this.comboBox1.DataSource; }
set { comboBox1.DataSource = value; }
}

但 DisplayMember / ValueMember 用如下的程序,無法在 DataSource 確定的情況下,自動感知該數據源的字段!!:

[Description("顯示的綁定字段"), Category("數據")]
public string DisplayMember
{
  get { return this.comboBox1.DisplayMember; }
  set { this.comboBox1.DisplayMember = value; }
}


[Description("值的綁定字段"), Category("數據")]
public string ValueMember
{
  get { return this.comboBox1.ValueMember; }
  set { this.comboBox1.ValueMember = value; }
}

希望達到的效果(單個 ComboBox 情況下):
圖片說明
圖片說明

目前錯誤的效果:

圖片說明
選定 DataSource 後,DisplayMember 沒有任何變化,不會出現下拉框。

求助:這個應該如何設計????

最佳回答:


謝謝,我已經測試出來了,用如下的辦法:
[Description("控件綁定到的數據源的字段"), Category("數據")]
[TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design,Version = 4.0.0.0 , Culture = neutral , PublicKeyToken = b03f5f7f11d50a3a")]
[Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design, Version = 4.0.0.0 , Culture = neutral , PublicKeyToken = b03f5f7f11d50a3a" , typeof(UITypeEditor))]
public string DataField
{
get { return MyLabel.DataField; }
set { MyLabel.DataField = value; }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved