Windows Vista Forums

Set Focus To Specific Property In Property Grid

  1. #1


    Derek Hart Guest

    Set Focus To Specific Property In Property Grid

    I can set focus to my property grid by using propgrid.Focus - but how can I
    set the default property that is always first? Or just set focus to the
    default property? Can this be done?





      My System SpecsSystem Spec

  2. #2


    kimiraikkonen Guest

    Re: Set Focus To Specific Property In Property Grid

    On Sep 27, 11:40*pm, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > I can set focus to my property grid by using propgrid.Focus - but how canI
    > set the default property that is always first? Or just set focus to the
    > default property? Can this be done?
    Hi Derek,

    To select(or focus) a pre-defined property in a PropertyGrid control
    programmatically, you can use loop through GridItems and check "label"
    to determine which item to be selected:

    '------Begin-----
    Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    Dim pGridItem As GridItem = GridItem.Parent
    For Each egi As GridItem In pGridItem.GridItems
    If egi.Label = "property_label_here" Then
    PropertyGrid1.Focus()
    egi.Select()
    End If
    Next
    '------End-------


    Hope this helps,

    Onur Güzel

      My System SpecsSystem Spec

  3. #3


    Derek Hart Guest

    Re: Set Focus To Specific Property In Property Grid

    Thank you for the answer. Just need to add one thing to it. I am running
    this code on the keydown event for a textbox control. It sets focus to the
    grid properly now. But I need to trap the keystroke that was hit and fill it
    in as the first character in the property, just like how Visual Studio works
    when you are on a control and hit the first keyboard character and it starts
    typing in the default property for that control. Is this possible?


    "kimiraikkonen" <kimiraikkonen85@xxxxxx> wrote in message
    news:d0081a3d-c555-4854-a226-dfdfaa56b500@xxxxxx
    On Sep 27, 11:40 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > I can set focus to my property grid by using propgrid.Focus - but how can
    > I
    > set the default property that is always first? Or just set focus to the
    > default property? Can this be done?
    Hi Derek,

    To select(or focus) a pre-defined property in a PropertyGrid control
    programmatically, you can use loop through GridItems and check "label"
    to determine which item to be selected:

    '------Begin-----
    Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    Dim pGridItem As GridItem = GridItem.Parent
    For Each egi As GridItem In pGridItem.GridItems
    If egi.Label = "property_label_here" Then
    PropertyGrid1.Focus()
    egi.Select()
    End If
    Next
    '------End-------


    Hope this helps,

    Onur Güzel



      My System SpecsSystem Spec

  4. #4


    kimiraikkonen Guest

    Re: Set Focus To Specific Property In Property Grid

    On Sep 28, 8:33*pm, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > Thank you for the answer. Just need to add one thing to it. I am running
    > this code on the keydown event for a textbox control. It sets focus to the
    > grid properly now. But I need to trap the keystroke that was hit and fillit
    > in as the first character in the property, just like how Visual Studio works
    > when you are on a control and hit the first keyboard character and it starts
    > typing in the default property for that control. Is this possible?
    >
    > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >
    > news:d0081a3d-c555-4854-a226-dfdfaa56b500@xxxxxx
    > On Sep 27, 11:40 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >

    > > I can set focus to my property grid by using propgrid.Focus - but how can
    > > I
    > > set the default property that is always first? Or just set focus to the
    > > default property? Can this be done?
    >
    > Hi Derek,
    >
    > To select(or focus) a pre-defined property in a PropertyGrid control
    > programmatically, you can use loop through GridItems and check "label"
    > to determine which item to be selected:
    >
    > '------Begin-----
    > Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    > Dim pGridItem As GridItem = GridItem.Parent
    > For Each egi As GridItem In pGridItem.GridItems
    > If egi.Label = "property_label_here" Then
    > PropertyGrid1.Focus()
    > egi.Select()
    > End If
    > Next
    > '------End-------
    >
    > Hope this helps,
    >
    > Onur Güzel
    As far as i understand (i couldn't guess well maybe), you're wanting
    something like IntelliSense or setting the value of a property within
    textbox, and setting PropertyGrid item's value outside PropertyGrid
    control is not possible, because "Value" property is ReadOnly.

    Or, my another guess that if you want to highlight a property grid
    item which is inside PropertyGrid control while initial key matches
    with the text in textbox you can use that:

    '--------------Begin-------------
    Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles TextBox1.KeyDown

    Dim GridItem As GridItem = _
    PropertyGrid1.SelectedGridItem
    Dim pGridItem As GridItem = _
    GridItem.Parent
    For Each egi As GridItem In _
    pGridItem.GridItems
    If egi.Label.StartsWith(e.KeyData.ToString) Then
    PropertyGrid1.Focus()
    egi.Select()
    End If
    Next

    End Sub
    '--------End----------

    HTH,

    Onur Güzel


      My System SpecsSystem Spec

  5. #5


    Derek Hart Guest

    Re: Set Focus To Specific Property In Property Grid

    Not quite. When I am in Visual Studio designing a form, and I highlight a
    text box, when I then hit a letter, such as "T", it moves the cursor to the
    property grid into the text property and enters "T" - then then user can
    type the rest of the text in this property. Make sense?

    "kimiraikkonen" <kimiraikkonen85@xxxxxx> wrote in message
    news:fe617152-5304-485f-86d6-7ec85323e170@xxxxxx
    On Sep 28, 8:33 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > Thank you for the answer. Just need to add one thing to it. I am running
    > this code on the keydown event for a textbox control. It sets focus to the
    > grid properly now. But I need to trap the keystroke that was hit and fill
    > it
    > in as the first character in the property, just like how Visual Studio
    > works
    > when you are on a control and hit the first keyboard character and it
    > starts
    > typing in the default property for that control. Is this possible?
    >
    > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >
    > news:d0081a3d-c555-4854-a226-dfdfaa56b500@xxxxxx
    > On Sep 27, 11:40 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >

    > > I can set focus to my property grid by using propgrid.Focus - but how
    > > can
    > > I
    > > set the default property that is always first? Or just set focus to the
    > > default property? Can this be done?
    >
    > Hi Derek,
    >
    > To select(or focus) a pre-defined property in a PropertyGrid control
    > programmatically, you can use loop through GridItems and check "label"
    > to determine which item to be selected:
    >
    > '------Begin-----
    > Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    > Dim pGridItem As GridItem = GridItem.Parent
    > For Each egi As GridItem In pGridItem.GridItems
    > If egi.Label = "property_label_here" Then
    > PropertyGrid1.Focus()
    > egi.Select()
    > End If
    > Next
    > '------End-------
    >
    > Hope this helps,
    >
    > Onur Güzel
    As far as i understand (i couldn't guess well maybe), you're wanting
    something like IntelliSense or setting the value of a property within
    textbox, and setting PropertyGrid item's value outside PropertyGrid
    control is not possible, because "Value" property is ReadOnly.

    Or, my another guess that if you want to highlight a property grid
    item which is inside PropertyGrid control while initial key matches
    with the text in textbox you can use that:

    '--------------Begin-------------
    Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles TextBox1.KeyDown

    Dim GridItem As GridItem = _
    PropertyGrid1.SelectedGridItem
    Dim pGridItem As GridItem = _
    GridItem.Parent
    For Each egi As GridItem In _
    pGridItem.GridItems
    If egi.Label.StartsWith(e.KeyData.ToString) Then
    PropertyGrid1.Focus()
    egi.Select()
    End If
    Next

    End Sub
    '--------End----------

    HTH,

    Onur Güzel



      My System SpecsSystem Spec

  6. #6


    kimiraikkonen Guest

    Re: Set Focus To Specific Property In Property Grid

    On Sep 29, 1:17*am, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > Not quite. When I am in Visual Studio designing a form, and I highlight a
    > text box, when I then hit a letter, such as "T", it moves the cursor to the
    > property grid into the text property and enters "T" - then then user can
    > type the rest of the text in this property. *Make sense?
    >
    > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >
    > news:fe617152-5304-485f-86d6-7ec85323e170@xxxxxx
    > On Sep 28, 8:33 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >
    >
    >

    > > Thank you for the answer. Just need to add one thing to it. I am running
    > > this code on the keydown event for a textbox control. It sets focus to the
    > > grid properly now. But I need to trap the keystroke that was hit and fill
    > > it
    > > in as the first character in the property, just like how Visual Studio
    > > works
    > > when you are on a control and hit the first keyboard character and it
    > > starts
    > > typing in the default property for that control. Is this possible?
    >

    > > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >

    > >news:d0081a3d-c555-4854-a226-dfdfaa56b500@xxxxxx
    > > On Sep 27, 11:40 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >

    > > > I can set focus to my property grid by using propgrid.Focus - but how
    > > > can
    > > > I
    > > > set the default property that is always first? Or just set focus to the
    > > > default property? Can this be done?
    >

    > > Hi Derek,
    >

    > > To select(or focus) a pre-defined property in a PropertyGrid control
    > > programmatically, you can use loop through GridItems and check "label"
    > > to determine which item to be selected:
    >

    > > '------Begin-----
    > > Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    > > Dim pGridItem As GridItem = GridItem.Parent
    > > For Each egi As GridItem In pGridItem.GridItems
    > > If egi.Label = "property_label_here" Then
    > > PropertyGrid1.Focus()
    > > egi.Select()
    > > End If
    > > Next
    > > '------End-------
    >

    > > Hope this helps,
    >

    > > Onur Güzel
    >
    > As far as i understand (i couldn't guess well maybe), you're wanting
    > something like IntelliSense or setting the value of a property within
    > textbox, and setting PropertyGrid item's value outside PropertyGrid
    > control is not possible, because "Value" property is ReadOnly.
    >
    > Or, my another guess that if you want to highlight a property grid
    > item which is inside PropertyGrid control while initial key matches
    > with the text in textbox you can use that:
    >
    > '--------------Begin-------------
    > Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
    > ByVal e As System.Windows.Forms.KeyEventArgs) _
    > Handles TextBox1.KeyDown
    >
    > Dim GridItem As GridItem = _
    > PropertyGrid1.SelectedGridItem
    > Dim pGridItem As GridItem = _
    > GridItem.Parent
    > For Each egi As GridItem In _
    > pGridItem.GridItems
    > If egi.Label.StartsWith(e.KeyData.ToString) Then
    > PropertyGrid1.Focus()
    > egi.Select()
    > End If
    > Next
    >
    > End Sub
    > '--------End----------
    >
    > HTH,
    >
    > Onur Güzel
    Now got it what you desribe in VS. But couldn't associate your aim
    with a textbox and typing in a defaul property of a propertygrid
    control. For example, you can make a property default by using
    "DefaultPropertyAttribute" in your class, for example you can design
    your class whose default property is "Title" as follows:

    <DefaultPropertyAttribute("Title")> _
    Public Class SampleProperty

    Private _Title As String

    <CategoryAttribute("Application"), _
    Browsable(True), _
    [ReadOnly](False), _
    BindableAttribute(False), _
    DefaultValueAttribute(""), _
    DesignOnly(False), _
    DescriptionAttribute("Enter Title for the application")> _
    Public Property Title() As String
    Get
    Return _Title
    End Get
    Set(ByVal Value As String)
    _Title = Value
    End Set
    End Property

    Now, when you associate that class with PropertyGrid using:
    "PropertyGrid1.SelectedObject = New SampleProperty" preferably in
    form1_load event, "Title" property is pre-selected in gray and when
    you type in a textbox using the code above, it gets focus in blue and
    starts to type the value of that property.

    Sorry, if i got wrong,

    Hope this helps,

    Onur Güzel

      My System SpecsSystem Spec

  7. #7


    Derek Hart Guest

    Re: Set Focus To Specific Property In Property Grid

    Not sure I understand how this will solve the problem. In Visual Studio, if
    I design a text box, then highlight it and hit a keyboard character, it will
    set focus to the property grid, and enter that character in the "text"
    property waiting for more input. Can I recreate this somehow?


    "kimiraikkonen" <kimiraikkonen85@xxxxxx> wrote in message
    news:1a2c3eeb-464a-4bb1-ba21-186ae472b3e0@xxxxxx
    On Sep 29, 1:17 am, "Derek Hart" <derekmh...@xxxxxx> wrote:

    > Not quite. When I am in Visual Studio designing a form, and I highlight a
    > text box, when I then hit a letter, such as "T", it moves the cursor to
    > the
    > property grid into the text property and enters "T" - then then user can
    > type the rest of the text in this property. Make sense?
    >
    > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >
    > news:fe617152-5304-485f-86d6-7ec85323e170@xxxxxx
    > On Sep 28, 8:33 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >
    >
    >

    > > Thank you for the answer. Just need to add one thing to it. I am running
    > > this code on the keydown event for a textbox control. It sets focus to
    > > the
    > > grid properly now. But I need to trap the keystroke that was hit and
    > > fill
    > > it
    > > in as the first character in the property, just like how Visual Studio
    > > works
    > > when you are on a control and hit the first keyboard character and it
    > > starts
    > > typing in the default property for that control. Is this possible?
    >

    > > "kimiraikkonen" <kimiraikkone...@xxxxxx> wrote in message
    >

    > >news:d0081a3d-c555-4854-a226-dfdfaa56b500@xxxxxx
    > > On Sep 27, 11:40 pm, "Derek Hart" <derekmh...@xxxxxx> wrote:
    >

    > > > I can set focus to my property grid by using propgrid.Focus - but how
    > > > can
    > > > I
    > > > set the default property that is always first? Or just set focus to
    > > > the
    > > > default property? Can this be done?
    >

    > > Hi Derek,
    >

    > > To select(or focus) a pre-defined property in a PropertyGrid control
    > > programmatically, you can use loop through GridItems and check "label"
    > > to determine which item to be selected:
    >

    > > '------Begin-----
    > > Dim GridItem As GridItem = PropertyGrid1.SelectedGridItem
    > > Dim pGridItem As GridItem = GridItem.Parent
    > > For Each egi As GridItem In pGridItem.GridItems
    > > If egi.Label = "property_label_here" Then
    > > PropertyGrid1.Focus()
    > > egi.Select()
    > > End If
    > > Next
    > > '------End-------
    >

    > > Hope this helps,
    >

    > > Onur Güzel
    >
    > As far as i understand (i couldn't guess well maybe), you're wanting
    > something like IntelliSense or setting the value of a property within
    > textbox, and setting PropertyGrid item's value outside PropertyGrid
    > control is not possible, because "Value" property is ReadOnly.
    >
    > Or, my another guess that if you want to highlight a property grid
    > item which is inside PropertyGrid control while initial key matches
    > with the text in textbox you can use that:
    >
    > '--------------Begin-------------
    > Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
    > ByVal e As System.Windows.Forms.KeyEventArgs) _
    > Handles TextBox1.KeyDown
    >
    > Dim GridItem As GridItem = _
    > PropertyGrid1.SelectedGridItem
    > Dim pGridItem As GridItem = _
    > GridItem.Parent
    > For Each egi As GridItem In _
    > pGridItem.GridItems
    > If egi.Label.StartsWith(e.KeyData.ToString) Then
    > PropertyGrid1.Focus()
    > egi.Select()
    > End If
    > Next
    >
    > End Sub
    > '--------End----------
    >
    > HTH,
    >
    > Onur Güzel
    Now got it what you desribe in VS. But couldn't associate your aim
    with a textbox and typing in a defaul property of a propertygrid
    control. For example, you can make a property default by using
    "DefaultPropertyAttribute" in your class, for example you can design
    your class whose default property is "Title" as follows:

    <DefaultPropertyAttribute("Title")> _
    Public Class SampleProperty

    Private _Title As String

    <CategoryAttribute("Application"), _
    Browsable(True), _
    [ReadOnly](False), _
    BindableAttribute(False), _
    DefaultValueAttribute(""), _
    DesignOnly(False), _
    DescriptionAttribute("Enter Title for the application")> _
    Public Property Title() As String
    Get
    Return _Title
    End Get
    Set(ByVal Value As String)
    _Title = Value
    End Set
    End Property

    Now, when you associate that class with PropertyGrid using:
    "PropertyGrid1.SelectedObject = New SampleProperty" preferably in
    form1_load event, "Title" property is pre-selected in gray and when
    you type in a textbox using the code above, it gets focus in blue and
    starts to type the value of that property.

    Sorry, if i got wrong,

    Hope this helps,

    Onur Güzel



      My System SpecsSystem Spec

  8. #8


    Jeff Johnson Guest

    Re: Set Focus To Specific Property In Property Grid

    "Derek Hart" <derekmhart@xxxxxx> wrote in message
    news:eAzNqojIJHA.3932@xxxxxx

    > Not sure I understand how this will solve the problem. In Visual Studio,
    > if I design a text box, then highlight it and hit a keyboard character, it
    > will set focus to the property grid, and enter that character in the
    > "text" property waiting for more input. Can I recreate this somehow?
    Remember that the PropertyGrid has an object assigned to it that serves as
    the source of the data it displays. I think what you need to do is alter
    that object so that your desired property now contains the character that
    was typed and then set your focus to the PropertyGrid and the property.



      My System SpecsSystem Spec

  9. #9


    atalanta Guest

    Re: Set Focus To Specific Property In Property Grid

    Sounds like you want to use a macro in VS.

    "Derek Hart" wrote:

    > Not sure I understand how this will solve the problem. In Visual Studio, if
    > I design a text box, then highlight it and hit a keyboard character, it will
    > set focus to the property grid, and enter that character in the "text"
    > property waiting for more input. Can I recreate this somehow?

      My System SpecsSystem Spec

  10. #10


    Derek Hart Guest

    Re: Set Focus To Specific Property In Property Grid

    Thanks for the different information. Just can't get it working. If I have
    a textbox highlighted (remember, I am in runtime mode with custom code that
    draws a rectangle around the textbox), then I hit a keystroke, it does set
    focus to the property grid, and sets focus to the property.

    Now I tried this code:
    CType(propGrid.SelectedObject, PropertiesLabel).LabelName =
    e.KeyData.ToString
    propGrid.Refresh

    So now when I hit a keystroke, it does fill in the first character into the
    grid. But here is the tricky part. It does not open the property up for
    editing. It sets focus to the property. Now the user hits another keystroke
    and it types over the first one. Is is possible after the Refresh is done,
    to open up the property for editing, and be in the second character
    position?



    "atalanta" <atalanta@xxxxxx> wrote in message
    news:9C94AA0A-009D-4CEB-A7AC-B70CB67C8BC3@xxxxxx

    > Sounds like you want to use a macro in VS.
    >
    > "Derek Hart" wrote:
    >

    >> Not sure I understand how this will solve the problem. In Visual Studio,
    >> if
    >> I design a text box, then highlight it and hit a keyboard character, it
    >> will
    >> set focus to the property grid, and enter that character in the "text"
    >> property waiting for more input. Can I recreate this somehow?
    >


      My System SpecsSystem Spec

Page 1 of 2 12 LastLast
Set Focus To Specific Property In Property Grid

Similar Threads
Thread Thread Starter Forum Replies Last Post
rename property? Mike PowerShell 0 12 Feb 2009
How do I use the property of a property? John Vottero PowerShell 2 28 Jul 2008
Use my custom TypeDescriptor to obtains default Value on property inXAML Property Editor of Visual Studio 2008 azerty Avalon 0 14 Apr 2008
Value under the CPU property? Cyberstorme PowerShell 2 10 Jan 2008
How to set file property # to a value > 99 KE7LYS Vista file management 2 07 May 2007