作成日: 2020/10/27 最終更新日: 2020/10/27
文書種別
使用方法
詳細
ツリー表示の場合、デフォルトでは各ノード行の展開/縮小アイコンをクリックすることでツリーのノード(アウトライン)を展開および縮小できます。
しかし、MouseDownイベントにてHitTestメソッドを利用すると、ノードのあるセルのどの部分をクリックしても、この動作を行わせることができるようになります。以下のように、HitTest.Type が「Cell」である場合にNodeのExpandedプロパティを切り替えるコードを追加して、動作をご確認ください。
◎サンプルコード(VB)
しかし、MouseDownイベントにてHitTestメソッドを利用すると、ノードのあるセルのどの部分をクリックしても、この動作を行わせることができるようになります。以下のように、HitTest.Type が「Cell」である場合にNodeのExpandedプロパティを切り替えるコードを追加して、動作をご確認ください。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.Cols.Fixed = 0
C1FlexGrid1.Tree.Column = 0
C1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf
C1FlexGrid1.Tree.Show(1)
C1FlexGrid1.Rows(1).IsNode = True
C1FlexGrid1.Rows(1).Node.Level = 0
C1FlexGrid1.Rows(3).IsNode = True
C1FlexGrid1.Rows(3).Node.Level = 0
C1FlexGrid1(1, 0) = "ノード行1"
C1FlexGrid1(3, 0) = "ノード行2"
End Sub
Private Sub C1FlexGrid1_MouseDown(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseDown
If C1FlexGrid1.HitTest().Type = HitTestTypeEnum.Cell Then
Dim idxRow As Integer = C1FlexGrid1.MouseRow
Dim idxCol As Integer = C1FlexGrid1.MouseCol
If idxRow < C1FlexGrid1.Rows.Fixed OrElse
idxCol <> 0 OrElse
C1FlexGrid1.Rows(idxRow).IsNode = False Then
Exit Sub
End If
C1FlexGrid1.Rows(idxRow).Node.Expanded = Not C1FlexGrid1.Rows(idxRow).Node.Expanded
End If
End Sub
End Class
◎サンプルコード(C#)using C1.Win.C1FlexGrid;
namespace C1FlexGrid_Node
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Cols.Fixed = 0;
c1FlexGrid1.Tree.Column = 0;
c1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf;
c1FlexGrid1.Tree.Show(1);
c1FlexGrid1.Rows[1].IsNode = true;
c1FlexGrid1.Rows[1].Node.Level = 0;
c1FlexGrid1.Rows[3].IsNode = true;
c1FlexGrid1.Rows[3].Node.Level = 0;
c1FlexGrid1[1, 0] = "ノード行1";
c1FlexGrid1[3, 0] = "ノード行2";
}
private void c1FlexGrid1_MouseDown(object sender, MouseEventArgs e)
{
if ((c1FlexGrid1.HitTest().Type == HitTestTypeEnum.Cell))
{
int idxRow = c1FlexGrid1.MouseRow;
int idxCol = c1FlexGrid1.MouseCol;
if (idxRow < c1FlexGrid1.Rows.Fixed
|| idxCol != 0
|| c1FlexGrid1.Rows[idxRow].IsNode == false)
{
return;
}
c1FlexGrid1.Rows[idxRow].Node.Expanded = !c1FlexGrid1.Rows[idxRow].Node.Expanded;
}
}
}
}
関連情報
旧文書番号
86133