我創建了具有多個屬性的自定義用戶控件。一個指定我想讓控件訪問哪個數據庫。我希望能夠向控制檯的用戶顯示一個下拉列表,他可以從中選擇控件將與哪個數據庫進行交互。爲自定義控件創建有效屬性值的下拉列表
如何讓下拉菜單起作用?我可以得到默認值,但還沒有弄清楚如何獲得可選列表。
任何幫助都是有益的。
謝謝。
Marshall
我創建了具有多個屬性的自定義用戶控件。一個指定我想讓控件訪問哪個數據庫。我希望能夠向控制檯的用戶顯示一個下拉列表,他可以從中選擇控件將與哪個數據庫進行交互。爲自定義控件創建有效屬性值的下拉列表
如何讓下拉菜單起作用?我可以得到默認值,但還沒有弄清楚如何獲得可選列表。
任何幫助都是有益的。
謝謝。
Marshall
下面是我用它來創建自定義數據源爲我的組合框模板:
Private Class Listing
Private _List As New ArrayList
Public Sub Add(ByVal ItemNumber As Integer, ByVal ItemName As String)
_List.Add(New dataItem(ItemNumber, ItemName))
End Sub
Public ReadOnly Property List() As ArrayList
Get
Return _List
End Get
End Property
End Class
Private Class dataItem
Private _ItemNumber As Integer
Private _ItemName As String
Public Sub New(ByVal intItemNumber As Integer, ByVal strItemName As String)
Me._ItemNumber = intItemNumber
Me._ItemName = strItemName
End Sub
Public ReadOnly Property ItemName() As String
Get
Return _ItemName
End Get
End Property
Public ReadOnly Property ItemNumber() As Integer
Get
Return _ItemNumber
End Get
End Property
Public ReadOnly Property DisplayValue() As String
Get
Return CStr(Me._ItemNumber).Trim & " - " & _ItemName.Trim
End Get
End Property
Public Overrides Function ToString() As String
Return CStr(Me._ItemNumber).Trim & " - " & _ItemName.Trim
End Function
End Class
這就是我如何加載:
ListBindSource = New Listing
Me.BindingSource.MoveFirst()
For Each Row As DataRowView In Me.BindingSource.List
Dim strName As String = String.Empty
Dim intPos As Integer = Me.BindingSource.Find("Number", Row("Number"))
If intPos > -1 Then
Me.BindingSource.Position = intPos
strName = Me.BindingSource.Current("Name")
End If
ListBindSource.Add(Row("Number"), strName)
Next
cboNumber.DataSource = ListBindSource.POList
cboNumber.DisplayMember = "DisplayValue"
cboNumber.ValueMember = "Number"
AddHandler cboNumber.SelectedIndexChanged, AddressOf _
cboNumber_SelectedIndexChanged
希望這有助於。要記住的一件事是,如果cboNumber具有已分配給SelectedIndexchanged事件的處理程序,則會遇到問題。所以不要創建一個默認事件。
我對你的問題有點困惑。
如果您的用戶控件包含一個DropDownList控件,只是初始化用戶控件的某處。
最簡單的方法是在用戶控件的Codebehind中,只需執行DropDownList.Items.Add()或任何添加項目的語法。
你只需要將你自己的TypeConverter附加到你的財產。您將覆蓋GetStandardValuesSupported和GetStandardValues方法(也許還有GetStandardValuesExclusive)以返回要顯示的數據庫列表。
如果您是PropertyGrid和TypeConverter的新手,這裏是document。
結果比我想象的要簡單。
我爲該屬性設置了一個枚舉,但在使用它的屬性類型時遇到了問題。說在班級之外是無法進入的。
然後我有一個'嘟嘟'的時刻,並將朋友的枚舉更改爲公共,然後我可以使用枚舉作爲屬性類型。因此,當我查看控件屬性的值時,枚舉值將在下拉列表中列出。
感謝所有回答。
馬歇爾
我不是說在用戶控件本身中使用組合框。我正在討論在控件的屬性框中使用它。我有一個屬性,我想限制其有效值。我之前在屬性頁面中看到過下拉菜單,並且正在嘗試複製該行爲。 – Marshall 2010-01-08 15:56:10