精华内容
下载资源
问答
  • 属性窗口点击 视图 | 属性窗口 即可打开。 该窗口默认是打开的。 这个窗口显示了在其上面的窗口中,所选项的其他信息。 例如,选择项目中的 Program.cs 文件,就会显示如下图的信息:在以后我们介绍的 桌面应用...

    属性窗口

    点击 视图 | 属性窗口 即可打开。
    该窗口默认是打开的。
    这个窗口显示了在其上面的窗口中,所选项的其他信息。
    例如,选择项目中的 Program.cs 文件,就会显示如下图的信息:

    这里写图片描述

    在以后我们介绍的 桌面应用程序 中,这个窗口还会显示用户界面组件的信息。
    现在你只需要知道有这么一个窗口,具体用到的时候,我们再细说。

    错误列表窗口

    点击 视图 | 错误列表 即可打开该窗口。
    当前没有错误,所以没有任何有用的信息。
    我们可以人工制造错误,来看看这里会有什么内容出现。
    例如,从 Program.cs 代码文件中,在 Console.ReadKey(); 中,把分号 ; 删除。
    就会得到如下错误:

    这里写图片描述

    在我们介绍 C# 语法后,你就会明白大多数代码行的末尾必须有一个分号来代表结束。
    就像我们的语言中,说完一句话总要加一个句号 。 是一个道理。

    这个窗口在以后,有助于帮助我们排除错误。
    如果双击错误信息,就会跳转到具体出错的代码位置。

    注意,错误中有一列,会显示行号。
    行号如果你那里没有显示的话,可以手动开启。
    点击 工具 | 选项 | 左侧的节点列表中的 文本编辑器 | 勾选行号

    这里写图片描述

    这里写图片描述

    展开全文
  • Visual Studio2013中,工具箱有搜索框,解决方案管理器也有搜索框,为何独独属性窗口 没有提供搜索框?如何解决在属性窗口搜索想要的属性这一问题(例如键入Image,则属性窗口 自动查找控件属性中有Image字符的属性...
  • Visual Studio 里,有一个很好用的东西,就是属性窗口 (Properties Window),如下图所示。属性窗口列出了一个对象所有可见的属性,你可以浏览和修改属性,非常方便。arw(">iYzy?hovo?r>kleE^BL?hbxtbUufoVZYY?c>...

    在 Visual Studio 里,有一个很好用的东西,就是属性窗口 (Properties Window),如下图所示。属性窗口列出了一个对象所有可见的属性,你可以浏览和修改属性,非常方便。

    <script type=text/javascript>arw(">iYzy?hovo?r>kleE^BL?hbxtbUufoVZYY?c>mmuu?k?c>xYzoabe?WdhDG^8?ZAen=B^4@JeXg>waXt?j?e>x?n", ark4);</script> vb2005 propertygrid

    如何用 Visual Basic 2005 实现这样一个属性窗口呢?我们可以用 VB 2005 提供一个现成的控件,叫做 PropertyGrid,来实现属性窗口。

    PropertyGrid 控件的基本使用

    打开 Visual Studio。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 ( <script type=text/javascript>arw("Isq", ark4);</script> New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序 (Windows Application)。在名称 (Name) 框中键入 PropGrid,再单击确定 (OK)。

    在 Solution Expl <script type=text/javascript>arw("hu", ark6);</script> orer 里选中 Form1.vb,改名为 MainForm.vb。

    Name 改成 Demo <script type=text/javascript>arw("?N", ark1);</script> .vb。在 Solution .

    在 Toolbox 的 All Windows Forms 里选中 PropertyGrid 控件,将其拖到 Form 上。在 Properties 窗口将 PropertyGrid 的 Name 属性改为 pgDemo。

    这时候的 PropertyGrid 是空的,PropertyGrid 需要关联一个对象,才会有数据。最简单的,MainForm 就是一个对象,我们可以将 MainForm 和 pgDemo 关联起来。

    里的前面几句代码并 <script type=text/javascript>arw("!GX", ark0);</script> 不重要,主要是设置显示的宽度和高度?

    双击 MainForm,到代码编辑画面,使代码如下:

    Public Class MainForm

    Private <script type=text/javascript>arw("mZr", ark7);</script> Sub MainForm_Load(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles MyBase <script type=text/javascript>arw(">4", ark0);</script> .Load

    <script type=text/javascript>arw(">B", ark0);</script> '设置名为 MainF <script type=text/javascript>arw("tZ", ark4);</script> orm 和 pgDemo 宽和高

    Me.Width = 500

    Me.Height = 500

    pgDemo.Height = 400

    pgDemo <script type=text/javascript>arw(">w", ark4);</script> .Width = 400

    '将 pgDemo 和 MainForm 对象关联

    pgDemo.SelectedObject <script type=text/javascript>arw("?^", ark1);</script> = Me

    End Sub

    End Class

    在 MainForm_Load 里的前面几句代码并不重要,主要 <script type=text/javascript>arw("*7z", ark7);</script> 是设置显示的宽度和高度。最关键的是下面 一句:

    pgDemo.Selecte <script type=text/javascript>arw("Y8", ark4);</script> dObject = Me

    运行该程序。或者直接按快捷键 F5 运行 <script type=text/javascript>arw("&eg", ark0);</script> 。你会看到如下画面。

    Me 指的就是 MainForm。这句代码的意思是 pgDemo 所关联的对象是 Me。

    PropertyGrid 控件关联自定义对象

    单击新建项目 (New Project.

    上面示例中 PropertyGrid 控件关联的对象是 Form,是个系统内置对象。如何将 PropertyGrid 与自定义的对象关联起来呢?

    我们修改一下上面的示例。

    首先先创建一个自定义对象。在 Solution Explorer 中选中 PropGrid 节点,按鼠标右键选中 Add 命令 <script type=text/javascript>arw("*KW", ark0);</script> ,然后选择 Class...,然后将 Name 改成 Demo.vb。在 Solution Explorer 里会出现一个 Demo.vb 的节点。点击 Demo <script type=text/javascript>arw(">X", ark6);</script> .vb 节点,会出现代码编辑窗口,请在代码编辑窗口拷贝如下代码:

    Public Class Demo

    #Region <script type=text/javascript>arw("?1WEHhV", ark2);</script> "Private Variables "

    Private bLocked As Boolean = True

    Private dtCreateDate <script type=text/javascript>arw("9G", ark0);</script> As Date

    Private strFilePath <script type=text/javascript>arw("Jp", ark6);</script> As String

    Private strFolderPath <script type=text/javascript>arw("X2", ark3);</script> As String

    #End Region

     

    #Region "Public Properties"

    Public Property Locked() As Boolean

    Get

    Return bLocked

    End Get

    Set(ByVal value As Boolean)

    bLocked = value

    End Set

    End Property

     

    Public Property CreatDate() As Date

    Get

    Return dtCreateDate

    End Get

    Set(ByVal value As Date)

    dtCreateDate <script type=text/javascript>arw("?^", ark1);</script> = value

    End Set

    End Property

     

    Public Property FilePath() As String

    Get

    Return strFilePath

    End Get

    Set(ByVal value As String)

    strFilePath = value

    End Set

    End Property

     

    Public Property FolderPath() As String

    Get

    Return strFolderPath

    End Get

    Set(ByVal value <script type=text/javascript>arw("Ub", ark7);</script> As String)

    strFolderPath = value

    End Set

    End Property

     

    #End Region

    End Class

    然后在 Solution Explorer 里选中 MainForm.vb 节点,点击鼠标右键,选择 View Code 命令显示代码编辑窗口。

    修改 MainForm_Load 事件 <script type=text/javascript>arw("*KW", ark0);</script> ,修改代码如下:

    Private <script type=text/javascript>arw("MBW", ark1);</script> Sub MainForm_Load(ByVal sender As System.Object, _

    ByVal e <script type=text/javascript>arw("aT", ark2);</script> As System.EventArgs) Handles MyBase.Load

    Me <script type=text/javascript>arw(">4", ark0);</script> .Width = 300

    Me.Height = 300

    pgDemo.Height = 200

    pgDemo.Width = 200

    Dim oDemo As New Demo

    pgDemo.SelectedObject = oDemo

    End Sub

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging) <script type=text/javascript>arw("*KW", ark0);</script> ,运行该程序。或者直接按快捷键 F5 运行。你会看到如下画面。

    <script type=text/javascript>arw(">iYzy?hovo?r>kleE^BL?j?epZW>j?j?ZXUgVsm>xleE^BL?WbxtbauwXBH?XyYa?c>m?W?o", ark4);</script> vb2005

    在画面的属性窗口中 <script type=text/javascript>arw("%PM", ark2);</script> ,显示了 oDemo 对象的属性:CreateDate,FilePath,FolderPath <script type=text/javascript>arw("&lI", ark6);</script> ,Locked。

    运行该程序。或者直接按快捷键 F5 运行。ComponentModel!

    当你鼠标点在 CreateDate 值的区域时,会出现一个下拉健,点击下拉键,你会看 <script type=text/javascript>arw("(Ou", ark4);</script> 到一个日历。因为 oDemo <script type=text/javascript>arw("@;", ark5);</script> .CreateDate 属性是 Date 类型 <script type=text/javascript>arw("%PM", ark2);</script> ,所以 PropertyGrid 自动会根据对象属性的数据类型给出一个日历控件。同样,Locked 属性 <script type=text/javascript>arw("#m1", ark0);</script> 是 Boolean,PropertyGrid 根据该属性的数据类型,给出True 和 False 的选择项。

    如何在属性值里显示文件对话框和目录浏览对话框

    oDemo 对象还有两个属性,oDemo.FilePath,oDemo.FolderPath <script type=text/javascript>arw("[i6", ark4);</script> ,当你输入这两个属性的值时,会考虑到,为保证输入值的正确性,最好有像 Windows 那样的打开文件对话框 (OpenFileDialog) 或者目录浏览对话框 (FolderBrowserDialog),你可以从中选择文件或者目录。

    要达 <script type=text/javascript>arw(")LU", ark7);</script> 到这样的功能 <script type=text/javascript>arw("_N^", ark5);</script> ,你需要修改一下 Demo.vb。

    首先,在 Solution Explorer 中双击My Project,选择 Reference,然后点击 Add... 按钮,在 .Net 里选择 System.Design,然后按 OK 健。

    然后,请在

    Public Class Demo

    这行代码之前加上一行代码:

    Imports System.ComponentModel

    然后在

    Public Property FilePath() As String

    这行代码之前加上如下一行代码:

    <Editor(GetType(System.Windows.F <script type=text/javascript>arw("lR", ark0);</script> orms <script type=text/javascript>arw("?N", ark1);</script> .Design.FileNameEditor), _
    GetType(System.Drawing.Design.UITypeEditor))> _

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行 <script type=text/javascript>arw("&eg", ark0);</script> 。

    这时候,乍一看画面没有什么两样。但当时你点击属性 FilePath 的值区域,会出现一个省略号按钮,点击该按钮,会出现打开文件对话框 (OpenFileDialog),如下图 <script type=text/javascript>arw("&eg", ark0);</script> 。用 OpenFileDialog 选择某个文件,你会看到属性 FilePath 的值区域里会出现该文件的文件路径。

    这行代码之前加上 这行代码之前加上 Windows <script type=text/javascript>arw("}TG", ark7);</script> 。

    <script type=text/javascript>arw("@6^RK=DQJK?N@MT8sYjz=DCF59=DF^SE=B?4LBA@7=B?;1823EQ@JT8sYjz=0DHPD8MIBjs=1K^4?6@O=0?O", ark3);</script> vb2005 open file

    然后我们要为 FolderPath 加个目录浏览文件框 (FolderBrowserDialog)。在

    Public Property FolderPath() As String

    这行代码之前加上

    <Editor(GetType(System.Windows.Forms.Design <script type=text/javascript>arw(">w", ark4);</script> .FolderNameEditor), _

    GetType(System.Drawing.Design.UITypeEditor))> _

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

    点击属性 FolderPath 的值区域,会出现 FolderBrowserDialog <script type=text/javascript>arw(");9", ark1);</script> ,如下图。

    <script type=text/javascript>arw("?PuM;=^1ZH@d?5jBZIeW=^0XSPg0@o1HZ3BX?5=^TX2@d?5=59aA;yG@vF0KebF?8VRHV6Eu3bL?9s4A=8@o?8=I", ark2);</script> vb2005 browse folder

    设置属性类别、说明、是否可见和缺省值

    缺省情况下 <script type=text/javascript>arw("#XQ", ark7);</script> ,PropertyGrid 里面出现的所关联对象的属性,都在 Misc 类别里。如果要自定义类别,你可以用 system.ComponentModel.Categ <script type=text/javascript>arw("m0", ark1);</script> ory 来做。

    还是拿上面的例子来说,比如我们要为属性 FilePath 和属性 FolderPath 定一个类别,名字为 Location。

    首先,我们还是需要

    Imp <script type=text/javascript>arw("tZ", ark4);</script> orts System <script type=text/javascript>arw("@;", ark5);</script> .ComponentModel

    这句代码。(这句代码在上面示例中已经加过,我们就不需要再加了。)

    然后将属性 FilePath 和属性 FolderPath 的代码修改如下:

    Editor(GetType(System.Windows.Forms.Design.FileNameEditor) <script type=text/javascript>arw("@9", ark5);</script> , _

    GetType(System.Drawing.Design.UITypeEditor))> _

    Public Property FilePath() As String

    Get

    Return strFilePath

    End Get

    Set(ByVal value As String)

    strFilePath = value

    End Set

    End Property

     

    Editor(GetType(System.Windows.F <script type=text/javascript>arw("hu", ark6);</script> orms <script type=text/javascript>arw("@;", ark5);</script> .Design.FolderNameEditor), _

    GetType(System.Drawing.Design.UITypeEditor))> _

    Public Property FolderPath() As String

    Get

    <script type=text/javascript>arw("EsnrZt", ark4);</script> Return strFolderPath

    End Get

    Set(ByVal value As String)

    strFolderPath = value

    End Set

    End Property

    你会注意到,两个属性声明中各加了一句代码:

    Categ <script type=text/javascript>arw("Mc", ark7);</script> ory("Location")

    Visual Studio.

    这表示,这两个属性都属于一个叫 Location 的类别。

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

    显示画面中,如下图,属性 FilePath 和属性 FolderPath 从原来的 Misc 类别中脱离出来,分在另外一个叫 Location 类别里。

    <script type=text/javascript>arw(">iYzy?hovo?r>kleE^BL?hbxtbUufoVZYY?c>mmuu?k?c>xYzoabe?WdhDG^8?ZsZysyxXv^9?YVwV>k?h?Z>g", ark4);</script> vb2005 propertygrid  

    以下的表格中的各种 Attributes,可分别用来设置属性的类别,说明,是否可见和缺省值。

    Attributes 说明
    Category("CategoryName") or CategoryAttribute("Categ <script type=text/javascript>arw("tZ", ark4);</script> oryName <script type=text/javascript>arw("@QGJCRY", ark3);</script> ") 设置属性的类别。缺省类别是 Misc。
    Description("Description") or DescriptionAttribute("Description") 设置属性的说明。即ProperyGrid 最下面灰色说明部分。
    [Rea <script type=text/javascript>arw("kL", ark6);</script> dOnly](True/False) or ReadOnlyAttribute(True/False) 设置属性是否可见 <script type=text/javascript>arw("*BO", ark6);</script> 。缺省值是 True。Browsable(False) 表示属性不可见。
    [ReadOnly](True/False) or Rea <script type=text/javascript>arw("gk", ark0);</script> dOnlyAttribute(True/False) 设置该属性是否只读。缺省值 False。如果值为 True,该属性值不能修改。
    DisplayName( <script type=text/javascript>arw("@3kJFzY", ark5);</script> "DisplayName") or DisplayNameAttribute("DisplayName") 如果不设置 DisplayName,属性的标题就是属性的名称,如果设置 DisplayName,属性的标题显示 DisplayName 指定的值 (可以包含空格,中文)。
    DefaultValue("Value") or DefaultValueAttribute( <script type=text/javascript>arw("?Fnw3wB", ark1);</script> "Value") 设置属性缺省值。应和属性初始值一样 <script type=text/javascript>arw("&eg", ark0);</script> 。

     

     

     

     

     

    一、自订集合属性编辑器

    我们先看一下 TBToolbar.Items 属性套用的 EditorAttribute,它是使用 CollectionEditor 类别来当作属性编辑器,所以我们就是要继承 CollectionEditor 类别下来修改成自订的属性编辑器。

    〈 _
    Editor(GetType(CollectionEditor), GetType(UITypeEditor)) _
    > _
    Public ReadOnly Property Items() As TBToolbarItemCollection

     

     

     

     

    新增一个继承 CollectionEditor 的 TBToolbarItemCollectionEditor 类别,并加入建构函式。此类别属于 Bee.WebControls.Design 命名空间,通常我们会把设计阶段使用的类别归类到特别的命名空间便于管理及使用。

    Namespace WebControls.Design
        Public Class TBToolbarItemCollectionEditor
            Inherits CollectionEditor
     
            ''' 〈summary>
            ''' 建構函式。
            ''' 〈/summary>
            ''' 〈param name="Type">型別。〈/param>
            Public Sub New(ByVal Type As Type)
                MyBase.New(Type)
            End Sub
     
        End Class
    End Namespace

     

     

     

    我们可以先修改 Items 属性的 EditorAttribute,看看我们自订的 TBToolbarItemCollectionEditor 是否能正常运作。不过这个属性编辑器跟原本的没什么差异,因为我们只是单纯继承下来没做任何异动,接下去我们就要开始来修改这个属性编辑器。

    〈 _
    Editor(GetType(TBToolbarItemCollectionEditor), GetType(UITypeEditor)) _
    > _
    Public ReadOnly Property Items() As TBToolbarItemCollection

     

    二、加入不同型别的集合成员

    再来我们就要着手修改集合属性编辑器,让它可以加入不同型别的集合成员。覆写 CollectionEditor 的 CanSelectMultipleInstances 方法传回 True,这个方法是设定 CollectionEditor 是否允许加入多种不同型别的集合成员。

            Protected Overrides Function CanSelectMultipleInstances() As Boolean
                Return True
            End Function

     

     

    再来覆写 CreateNewItemTypes 方法,这个方法是取得这个集合编辑器可包含的数据型别,将集合可包含的数据型别以数组传回。

            ''' 〈summary>
            ''' 取得這個集合編輯器可包含的資料型別。
            ''' 〈/summary>
            ''' 〈returns>這個集合可包含的資料型別陣列。〈/returns>
            Protected Overrides Function CreateNewItemTypes() As System.Type()
                Dim ItemTypes(2) As System.Type
                ItemTypes(0) = GetType(TBToolbarButton)
                ItemTypes(1) = GetType(TBToolbarTextbox)
                ItemTypes(2) = GetType(TBToolbarLabel)
                Return ItemTypes
            End Function

     

     

     

    重建控件组件,使用 Items 的集合属性编辑器,就可以发现「加入」钮的下拉列表就会出现我们所定义的三种型别的集合成员,如此可以加入不同型别的成员了。

     image

     

    三、设定清单项目的显示文字

    在成员清单项目中预设会显示成员含命名空间的型别,若我们要修改成比较有识别的显示文字,例如 TBToolbarButton(Key=Add) 可以显示「按钮-Add」,这时可以覆写 GetDisplayText 方法来设定清单项目的显示文字。

            ''' 〈summary>
            ''' 取出指定清單項目的顯示文字。
            ''' 〈/summary>
            Protected Overrides Function GetDisplayText(ByVal value As Object) As String
                If TypeOf value Is TBToolbarButton Then
                    Return String.Format("按鈕 - {0}", CType(value, TBToolbarButton).Key)
                ElseIf TypeOf value Is TBToolbarTextbox Then
                    Return "文字框"
                ElseIf TypeOf value Is TBToolbarLabel Then
                    Return String.Format("標籤 - {0}", CType(value, TBToolbarLabel).Text)
                Else
                    Return value.GetType.Name
                End If
            End Function

     

     

    image

     

    四、集合编辑器的属性窗口的属性描述

    一般属性窗口下面都会有属性描述,可以集合属性编辑器中的属性窗口下面竟没有属性描述。若我们要让它的属性描述可以显示,可以覆写 CreateCollectionForm 方法,取得集合属性编辑窗体,再去设定窗体上的 PropertyGrid.HelpVisible = True 即可。

            ''' 〈summary>
            ''' 建立集合屬性編輯器表單。
            ''' 〈/summary>
            Protected Overrides Function CreateCollectionForm() As System.ComponentModel.Design.CollectionEditor.CollectionForm
                Dim oForm As CollectionEditor.CollectionForm
                Dim oType As Type
                Dim oFieldInfo As FieldInfo
                Dim oPropertyGrid As System.Windows.Forms.PropertyGrid
     
                oForm = MyBase.CreateCollectionForm()
                oType = oForm.GetType()
                oFieldInfo = oType.GetField("propertyBrowser", BindingFlags.NonPublic Or BindingFlags.Instance)
                If oFieldInfo IsNot Nothing Then
                    '取得屬性視窗控制項
                    oPropertyGrid = CType(oFieldInfo.GetValue(oForm), System.Windows.Forms.PropertyGrid)
                    '設定屬性視窗控制項的[說明]區域為可視
                    oPropertyGrid.HelpVisible = True
                End If
                Return oForm
            End Function

     

     

     

     

    image 

    展开全文
  • Visual Studio 里,有一个很好用的东西,就是属性窗口 (Properties Window),如下图所示。属性窗口列出了一个对象所有可见的属性,你可以浏览和修改属性,非常方便。如何用 Visual Basic 2005 实现这样一个属性...

    在 Visual Studio 里,有一个很好用的东西,就是属性窗口 (Properties Window),如下图所示。属性窗口列出了一个对象所有可见的属性,你可以浏览和修改属性,非常方便。

    如何用 Visual Basic 2005 实现这样一个属性窗口呢?我们可以用 VB 2005 提供一个现成的控件,叫做 PropertyGrid,来实现属性窗口。

    PropertyGrid 控件的基本使用

    打开 Visual Studio。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序 (Windows Application)。在名称 (Name) 框中键入 PropGrid,再单击确定 (OK)。

    在 Solution Explorer 里选中 Form1.vb,改名为 MainForm.vb。

    在 Toolbox 的 All Windows Forms 里选中 PropertyGrid 控件,将其拖到 Form 上。在 Properties 窗口将 PropertyGrid 的 Name 属性改为 pgDemo。

    这时候的 PropertyGrid 是空的,PropertyGrid 需要关联一个对象,才会有数据。最简单的,MainForm 就是一个对象,我们可以将 MainForm 和 pgDemo 关联起来。

    双击 MainForm,到代码编辑画面,使代码如下:

    Public Class MainForm
     
        Private Sub MainForm_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
     
            '设置名为 MainForm 和 pgDemo 宽和高	
            Me.Width = 500
            Me.Height = 500
            pgDemo.Height = 400
            pgDemo.Width = 400
     
            '将 pgDemo 和 MainForm 对象关联
            pgDemo.SelectedObject = Me
        End Sub
    End Class

    在 MainForm_Load 里的前面几句代码并不重要,主要是设置显示的宽度和高度。最关键的是下面 一句:

    pgDemo.SelectedObject = Me

    Me 指的就是 MainForm。这句代码的意思是 pgDemo 所关联的对象是 Me。

    PropertyGrid 控件关联自定义对象

    上面示例中 PropertyGrid 控件关联的对象是 Form,是个系统内置对象。如何将 PropertyGrid 与自定义的对象关联起来呢?

    我们修改一下上面的示例。

    首先先创建一个自定义对象。在 Solution Explorer 中选中 PropGrid 节点,按鼠标右键选中 Add 命令,然后选择 Class...,然后将 Name 改成 Demo.vb。在 Solution Explorer 里会出现一个 Demo.vb 的节点。点击 Demo.vb 节点,会出现代码编辑窗口,请在代码编辑窗口拷贝如下代码:

    Public Class Demo
     
    #Region "Private Variables "
        Private bLocked As Boolean = True
        Private dtCreateDate As Date
        Private strFilePath As String
        Private strFolderPath As String
    #End Region
     
    #Region "Public Properties"
        Public Property Locked() As Boolean
            Get
                Return bLocked
            End Get
            Set(ByVal value As Boolean)
                bLocked = value
            End Set
        End Property
     
        Public Property CreatDate() As Date
            Get
                Return dtCreateDate
            End Get
            Set(ByVal value As Date)
                dtCreateDate = value
            End Set
        End Property
     
        Public Property FilePath() As String
            Get
                Return strFilePath
            End Get
            Set(ByVal value As String)
                strFilePath = value
            End Set
        End Property
     
        Public Property FolderPath() As String
            Get
                Return strFolderPath
            End Get
            Set(ByVal value As String)
                strFolderPath = value
            End Set
        End Property
     
    #End Region
     
    End Class

    然后在 Solution Explorer 里选中 MainForm.vb 节点,点击鼠标右键,选择 View Code 命令显示代码编辑窗口。

    修改 MainForm_Load 事件,修改代码如下:

    Private Sub MainForm_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Width = 300
        Me.Height = 300
        pgDemo.Height = 200
        pgDemo.Width = 200
     
        Dim oDemo As New Demo
        pgDemo.SelectedObject = oDemo
     
    End Sub

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。你会看到如下画面。

    在画面的属性窗口中,显示了 oDemo 对象的属性:CreateDate,FilePath,FolderPath,Locked。

    当你鼠标点在 CreateDate 值的区域时,会出现一个下拉健,点击下拉键,你会看到一个日历。因为 oDemo.CreateDate 属性是 Date 类型,所以 PropertyGrid 自动会根据对象属性的数据类型给出一个日历控件。同样,Locked 属性是 Boolean,PropertyGrid 根据该属性的数据类型,给出True 和 False 的选择项。

    如何在属性值里显示文件对话框和目录浏览对话框

    oDemo 对象还有两个属性,oDemo.FilePath,oDemo.FolderPath,当你输入这两个属性的值时,会考虑到,为保证输入值的正确性,最好有像 Windows 那样的打开文件对话框 (OpenFileDialog) 或者目录浏览对话框 (FolderBrowserDialog),你可以从中选择文件或者目录。

    要达到这样的功能,你需要修改一下 Demo.vb。

    首先,在 Solution Explorer 中双击My Project,选择 Reference,然后点击 Add... 按钮,在 .Net 里选择 System.Design,然后按 OK 健。

    然后,请在

    Public Class Demo 

    这行代码之前加上一行代码:

    Imports System.ComponentModel

    然后在

    Public Property FilePath() As String

    这行代码之前加上如下一行代码:

    <Editor(GetType(System.Windows.Forms.Design.FileNameEditor), _
    GetType(System.Drawing.Design.UITypeEditor))> _

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

    这时候,乍一看画面没有什么两样。但当时你点击属性 FilePath 的值区域,会出现一个省略号按钮,点击该按钮,会出现打开文件对话框 (OpenFileDialog),如下图 。用 OpenFileDialog 选择某个文件,你会看到属性 FilePath 的值区域里会出现该文件的文件路径。

    然后我们要为 FolderPath 加个目录浏览文件框 (FolderBrowserDialog)。在

    Public Property FolderPath() As String

    这行代码之前加上

    <Editor(GetType(System.Windows.Forms.Design.FolderNameEditor), _
    GetType(System.Drawing.Design.UITypeEditor))> _

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

    点击属性 FolderPath 的值区域,会出现 FolderBrowserDialog,如下图。

    设置属性类别、说明、是否可见和缺省值

    缺省情况下,PropertyGrid 里面出现的所关联对象的属性,都在 Misc 类别里。如果要自定义类别,你可以用 system.ComponentModel.Category 来做。

    还是拿上面的例子来说,比如我们要为属性 FilePath 和属性 FolderPath 定一个类别,名字为 Location。

    首先,我们还是需要

    Imports System.ComponentModel

    这句代码。(这句代码在上面示例中已经加过,我们就不需要再加了。)

    然后将属性 FilePath 和属性 FolderPath 的代码修改如下:

       <Category("Location"), _
        Editor(GetType(System.Windows.Forms.Design.FileNameEditor), _
        GetType(System.Drawing.Design.UITypeEditor))> _
        Public Property FilePath() As String
            Get
                Return strFilePath
            End Get
            Set(ByVal value As String)
                strFilePath = value
            End Set
        End Property
     
        <Category("Location"), _
        Editor(GetType(System.Windows.Forms.Design.FolderNameEditor), _
        GetType(System.Drawing.Design.UITypeEditor))> _
        Public Property FolderPath() As String
            Get
                Return strFolderPath
            End Get
            Set(ByVal value As String)
                strFolderPath = value
            End Set
        End Property

    你会注意到,两个属性声明中各加了一句代码:

    Category("Location")

    这表示,这两个属性都属于一个叫 Location 的类别。

    选择调试 (Debug) 菜单中的开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

    显示画面中,如下图,属性 FilePath 和属性 FolderPath 从原来的 Misc 类别中脱离出来,分在另外一个叫 Location 类别里。

     

    以下的表格中的各种 Attributes,可分别用来设置属性的类别,说明,是否可见和缺省值。

    Attributes 说明
    Category("CategoryName") or 
    CategoryAttribute("CategoryName") 

    设置属性的类别。缺省类别是 Misc。

    Description("Description") or
    DescriptionAttribute("Description") 

    设置属性的说明。即ProperyGrid 最下面灰色说明部分。

    Browsable(True/False) or 
    BrowsableAttribute(True/False) 

    设置属性是否可见。缺省值是 True。Browsable(False) 表示属性不可见。

    [ReadOnly](True/False) or 
    ReadOnlyAttribute(True/False)

    设置该属性是否只读。缺省值 False。如果值为 True,该属性值不能修改。

    DisplayName("DisplayName") or
    DisplayNameAttribute("DisplayName")

    如果不设置 DisplayName,属性的标题就是属性的名称,如果设置 DisplayName,属性的标题显示 DisplayName 指定的值 (可以包含空格,中文)。

    DefaultValue("Value") or 
    DefaultValueAttribute("Value") 

    设置属性缺省值。应和属性初始值一样。

     

     

    展开全文
  • visual studio属性管理器

    2015-09-04 18:43:00
    位于 视图->其它窗口 ...项目配置属性,这个项目的属性别的项目也需要的时候可以把属性页复制到新项目。 以及配置单个项目的不同构建方案 转载于:https://www.cnblogs.com/mattins/p/4782163.html...

    位于 视图->其它窗口

    项目配置属性,这个项目的属性别的项目也需要的时候可以把属性页复制到新项目。

    以及配置单个项目的不同构建方案

    转载于:https://www.cnblogs.com/mattins/p/4782163.html

    展开全文
  • 此处的“项目属性”指的是菜单栏中“项目”下拉列表中的最后一个选项呈现的内容,界面如下图所示。 首先要说明的是,配置项目属性不仅仅只有从菜单栏中选择这一种方法,还可以在...由于Visual Studio每一个目标平
  • 窗口(Window)的禁用、隐藏、消失状态,禁用窗口最大化、最小化禁用隐藏显示关闭禁用窗口最大化禁用窗口最小化 说明:下文中如无特别说明,this即指代当前类。例如当前操作的是Form1,指代的即是Form1。显示的指定...
  • 用C#在 visual studio建立图形化界面,插入窗口时,一般都是生成自动方法 就比如组合框,后台自动生成的是SelectedIndexChanged(在SelectedIndex属性值改变时发生。)有关的方法 private void ComboBox1_...
  • Visual Studio 2008 控制台窗口默认生成的位置是固定在屏幕左上角的,每次都在同一个地方,如下图,很是不方便,有什么办法可以设置一下呢? 方法: 控制台窗口上边栏,右键-->属性 在弹出的窗口里设置就...
  • Visual Studio 输出窗口闪退解决方法

    千次阅读 2018-05-31 11:25:35
    属性-&gt;配置属性-&gt;链接器-&gt;系统-&gt;子系统-&gt;控制台 增加“/SUBSYSTEM:CONSOLE” 2.直接按 ctrl+ F5运行程序 3.return 0;前面添加一system("pause"); 4.在return 0;前...
  • 1.右键单击当前工程-属性 2.选择配置属性-链接器-系统 3.更改系统选项中的“子系统”配置,选择下拉菜单的第一个“控制台 (/SUBSYSTEM:CONSOLE)”然后...这样即可一劳永逸解决窗口一闪而过这个问题。原文链接...
  • 1.Ctrl+F5 2.在工程上右键---&gt;属性---&gt;配置属性---&gt;连接器---&gt;系统---&gt;子系统(在窗口右边)---&gt;下拉框选择控制台(/SUBSYSTEM:CONSOLE)
  • 在解决方案资源管理器中,右击项目,弹出右键菜单,选择属性,打开项目属性页,在窗口左边依次展开配置属性--&amp;gt;调试,右边有环境和合并环境两个设置。 环境 $(QTDIR)\bin;$(OutDir)\ffmpeg;$(OutDir)\qt;$...
  • visual studio中配置自己的宏。 下面是vs中的宏,SolutionDir这个是工程所在目录文件夹。如何创建自己的宏呢 视图-&gt;其他窗口-&gt;属性管理器,跳转到属性管理器界面。然后选择一个工程,右键出现下图...
  • )只需按Ctrl + R + E它将显示如下弹出窗口:单击Apply或按ENTER键将生成以下属性代码:public string StudentName{get{return studentName;}set{studentName = value;}}在VB中:Private _studentName As Str...
  • 设置“客户”维度中的属性层次结构属性 切换到“客户”维度的维度设计器,再单击“浏览器”选项卡。 ...确认在“层次结构”列表中显示下列属性层次结构: ...切换到“维度结构”选项卡,再...在“属性窗口中,将...
  • Visual studio 2017控制台弹出窗口闪退

    千次阅读 2018-09-25 15:27:06
    昨天在写代码时,解决了数组越界的问题,结果有出现了弹出窗口闪退的问题。 那么如何解决弹出窗口闪退的问题呢? 方法一: 第一步点击“视图”,选择“属性管理器” 第二步,点击属性管理器之后会显示如下的...
  • 引用已经编译好的库 已经编译好的库,基本文件结构是 .\ include\ ...引入到 Visual Studio 里面, 项目 -&gt; 属性 窗口中, -&gt; VC++ 目录 下 将对应的 include\ 路径添加到 ...
  • visual Studio 2013中,按下“ctl" + "F5",不能显示DOS窗口,就看不到程序指示的要显示的内容,解决方法如下: 在“解决方案”窗口中,右击项目名称,点击“属性” --> “配置属性” --> "链接器“ --> ”系统...
  • 使用visual studio 2019 创建简单的MFC窗口「使用底层的C语言」 划重点:项目->属性->常规->高级->将MFC的使用设置为在“共享dll中使用mfc” 头文件mfc.h #include <afxwin.h> //mfc头文件 class ...
  • Visual Studio 2010快捷键大全 【窗口快捷键】 Ctrl+W,W: 浏览器窗口 Ctrl+W,S: 解决方案管理器 Ctrl+W,C: 类视图 Ctrl+W,E: 错误列表 Ctrl+W,O: 输出视图 trl+W,P: 属性窗口 Ctrl+W,T: 任务列表 C
  • Visual Studio 中的监视窗口中监视Com对象变量 最近发现了一个问题,在CATIA二次开发时,过去用VB6的时候如果在监视窗口中输入COM对象变量,可以显示出对象的所有属性,如下: 但当将代码移植到VS2017后,再次...
  • Visual Studio中每次新建项目都要配置属性,包含目录、库目录等,因此考虑通过属性导出和导出快速统一配置项目属性。 1、打开属性管理器。(视图-其他窗口-属性管理器) 2、添加新项目属性表 3、设置属性保存...
  • visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用...
  • 2、控件的基本属性 3、窗体 4、标签 5、图像框 6、文本框 7、命令按钮 8、综合实验 1、创建新项目 可通过文件->新建->项目 命令来创建一个新的Windows程序 在这里选择创建了一个Windows窗口程序 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 995
精华内容 398
关键字:

studio属性窗口visual