Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > .NET General

Vista - Set Focus To Specific Property In Property Grid

Reply
 
Old 09-27-2008   #1 (permalink)
Derek Hart


 
 

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
Old 09-28-2008   #2 (permalink)
kimiraikkonen


 
 

Re: Set Focus To Specific Property In Property Grid

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

> 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
Old 09-28-2008   #3 (permalink)
Derek Hart


 
 

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:
Quote:

> 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
Old 09-28-2008   #4 (permalink)
kimiraikkonen


 
 

Re: Set Focus To Specific Property In Property Grid

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

> 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:
>
Quote:

> > 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
Old 09-28-2008   #5 (permalink)
Derek Hart


 
 

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:
Quote:

> 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:
>
Quote:

> > 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
Old 09-29-2008   #6 (permalink)
kimiraikkonen


 
 

Re: Set Focus To Specific Property In Property Grid

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

> 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:
>
>
>
Quote:

> > 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?
>
Quote:

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

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

> > > 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?
>
Quote:

> > Hi Derek,
>
Quote:

> > 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:
>
Quote:

> > '------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-------
>
Quote:

> > Hope this helps,
>
Quote:

> > 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
Old 09-29-2008   #7 (permalink)
Derek Hart


 
 

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:
Quote:

> 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:
>
>
>
Quote:

> > 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?
>
Quote:

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

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

> > > 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?
>
Quote:

> > Hi Derek,
>
Quote:

> > 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:
>
Quote:

> > '------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-------
>
Quote:

> > Hope this helps,
>
Quote:

> > 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
Old 10-02-2008   #8 (permalink)
Jeff Johnson


 
 

Re: Set Focus To Specific Property In Property Grid

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

> 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
Old 10-03-2008   #9 (permalink)
atalanta


 
 

Re: Set Focus To Specific Property In Property Grid

Sounds like you want to use a macro in VS.

"Derek Hart" wrote:
Quote:

> 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
Old 10-04-2008   #10 (permalink)
Derek Hart


 
 

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
Quote:

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

>> 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
Reply

Thread Tools


Similar Threads
Thread Forum
rename property? PowerShell
Read Only Property .NET General
How do I use the property of a property? PowerShell
Value under the CPU property? PowerShell


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46