C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90989 / 1階層)  PropertyGridのTAB移動について
□投稿者/ 魔界の仮面弁士 (2168回)-(2019/05/16(Thu) 11:37:24)
No90983 (や さん) に返信
> PropertyGrid で実行時に、項目をTAB移動させたいのですが、具体的にどうやれば実現できるかわかりません。

Public Class YourPropertyGrid
  Inherits System.Windows.Forms.PropertyGrid

  Protected Overrides Function ProcessKeyPreview(ByRef m As Message) As Boolean
    Const WM_KEYDOWN As Integer = &H100
    If m.Msg = WM_KEYDOWN AndAlso m.WParam = New IntPtr(Keys.Tab) Then
      Return SelectNextGridItem()
    End If
    Return MyBase.ProcessKeyPreview(m)
  End Function

  Private Function SelectNextGridItem() As Boolean
    Dim selected = SelectedGridItem
    Dim root = GetRootGridItem(selected)
    Dim gridItems = Descendents(root).ToList()
    Dim currentIndex = gridItems.IndexOf(selected)
    Dim nextIndex = Math.Min(gridItems.Count - 1, currentIndex + 1)
    Return gridItems(nextIndex).Select()
  End Function

  Private Function GetRootGridItem(item As GridItem) As GridItem
    Return If(item.GridItemType = GridItemType.Root, item, GetRootGridItem(item.Parent))
  End Function
  Private Iterator Function Descendents(item As GridItem) As IEnumerable(Of GridItem)
    If item.GridItemType = GridItemType.ArrayValue Then
      Return
    ElseIf item.GridItemType = GridItemType.Property Then
      Yield item
    Else
      For Each x As GridItem In item.GridItems
        For Each y As GridItem In Descendents(x)
          Yield y
        Next
      Next
    End If
  End Function
End Class
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←PropertyGridのTAB移動について /や →Re[2]: PropertyGridのTAB移動について /魔界の仮面弁士
 
上記関連ツリー

PropertyGridのTAB移動について / や (19/05/16(Thu) 09:29) #90983
PropertyGridのTAB移動について / 魔界の仮面弁士 (19/05/16(Thu) 11:37) #90989 ←Now
  └ Re[2]: PropertyGridのTAB移動について / 魔界の仮面弁士 (19/05/16(Thu) 11:43) #90990
    └ Re[3]: PropertyGridのTAB移動について / や (19/05/17(Fri) 10:31) #91008
      └ Re[4]: PropertyGridのTAB移動について / 魔界の仮面弁士 (19/05/17(Fri) 11:39) #91010
        └ Re[5]: PropertyGridのTAB移動について / 魔界の仮面弁士 (19/05/17(Fri) 11:59) #91012
          └ Re[6]: PropertyGridのTAB移動について / や (19/05/17(Fri) 12:58) #91013 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信