【问题标题】:How to add a user control drop down property in VB.NET如何在 VB.NET 中添加用户控件下拉属性
【发布时间】:2016-08-14 07:21:12
【问题描述】:

我正在使用Visual Basic 2010 Express Edition 中的类库来制作自定义文本框控件。如何为文本框添加下拉属性?

我需要一个不像你使用时那样的动态下拉菜单

Enum MaxValue
   item1 = 0
End Enum

因为我必须从数据库中获取项目。

我尝试添加可浏览选项,但没有任何反应:

<Browsable(True)>
Property Max_Value() As String

     Get
        Return MaxValue
     End Get

     Set(value As String
        MaxValue = value
     End Set
End Property

【问题讨论】:

  • 听起来您在寻找组合框而不是文本框。网上有很多这方面的教程。 Google 'vb.net 如何从数据库中填充组合框'
  • 感谢 FloatingKiwi 的重播
  • 但我即将制作自定义用户控件并添加一些属性,我需要添加一个下拉属性列表,让用户从列表中选择值
  • 您是否要求设计时间下拉菜单?这篇文章可能对stackoverflow.com/questions/2760544/…有帮助
  • 非常感谢,但是 c# 中的这段代码是否还有其他使用 vb.net 的东西

标签: vb.net


【解决方案1】:
    Imports System.ComponentModel
    Imports System.Drawing.Design
    Imports System.Windows.Forms.Design

    Public Class TestTextBox
            Inherits TextBox

            <Browsable(True)>
            <Editor(GetType(Editor), GetType(UITypeEditor))>
            <DefaultValue("Hello")>
            Public Property MyProperty As String

            Private Class Editor
                    Inherits UITypeEditor

                    Private mSvc As IWindowsFormsEditorService

                    Public Overrides Function GetEditStyle(context As ITypeDescriptorContext) As UITypeEditorEditStyle
                            Return UITypeEditorEditStyle.DropDown
                    End Function

                    Public Overrides Function EditValue(context As ITypeDescriptorContext, provider As IServiceProvider, value As Object) As Object
                            mSvc = CType(provider.GetService(GetType(IWindowsFormsEditorService)), IWindowsFormsEditorService)

                            Dim lb As New ListBox()
                            For Each value In {"Hello", "Whats", "Happening"}
                                    lb.Items.Add(value)
                            Next

                            If value IsNot Nothing Then
                                    lb.SelectedItem = value
                            End If

                            mSvc.DropDownControl(lb)

                            value = DirectCast(lb.SelectedItem, String)

                            Return value
                    End Function

            End Class

    End Class

【讨论】:

  • 非常感谢 :)) 我会试试看我需要的是代码,感谢再次重播
猜你喜欢
  • 2011-03-14
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多