まずTabStop対応を行うに当たって、決めておかないといけないのが。
- 何を持ってフォーカス可能と判断するか
という点。簡単に言えば「入力可能か?」ということに落ち着きそうなんだけど、それを色々なプロパティを元に判断してあげる必要があるんだよね。今回は(手軽にw)こういう条件で。
- ReadOnly=False:読み取り専用でない
- Visible=True:表示されている
それだけの判断で対応したいと思う。実際に業務とかで利用するには、もう少し条件がいるとは思うけどね。    
読み取り専用であってもフォーカスさせたいとか、そういうケースはあるだろうから。     
まぁ、そのあたりの制御をプロパティなりを通して設定できるように設計するのがベターだと。
なのでまずは、あるセルがこの条件を満たすか、というメソッドを用意してあげよう。
''' <summary>セルがフォーカス可能かをチェックする</summary>     
''' <param name="targetCell">対象となるセル</param>      
''' <returns>フォーカス可能な際はTrue</returns>      
Protected Overridable Overloads Function CheckFocusCell( _      
  ByVal targetCell As System.Windows.Forms.DataGridViewCell) As Boolean 
  If (Not targetCell.ReadOnly) AndAlso (targetCell.Visible) Then Return True     
  Return False 
End Function
ざっくり用意するとこんな感じ。これでまずは「フォーカス可能なセルか」という判断ができるようになった。    
あとは、次にフォーカス可能なセル、というのを検索する際にこのメソッドをバシバシ利用してあげればいいというハナシ。     
その際にどういう処理になるか、ってのは次の記事で。
 
0 件のコメント:
コメントを投稿