作成日: 2019/11/20 最終更新日: 2019/11/20
文書種別
使用方法
詳細
SelectionModeプロパティをListBoxに設定すると、Ctrlキー※を押しながらクリックすることで非連続の複数行を選択することができます。
※Shiftキーを押しながらクリックすると、連続した複数行を選択できます。
しかし、RowsオブジェクトのSelectedプロパティを使用し、以下のようなコードを用いて、Ctrlキーを押下せずに(マウスクリックのみで)、連続していない複数行を選択することができるようになります。
◎サンプルコード(VB)
◎サンプルコード(C#)
※Shiftキーを押しながらクリックすると、連続した複数行を選択できます。
しかし、RowsオブジェクトのSelectedプロパティを使用し、以下のようなコードを用いて、Ctrlキーを押下せずに(マウスクリックのみで)、連続していない複数行を選択することができるようになります。
◎サンプルコード(VB)
Imports System.Collections
Imports C1.Win.C1FlexGrid
Public Class Form1
Private selectedRows As New ArrayList()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 選択モードの設定
C1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ListBox
End Sub
Private Sub C1FlexGrid1_MouseDown(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseDown
' 再描画の中断
C1FlexGrid1.BeginUpdate()
' マウスポインタ位置の行番号の取得
Dim htInfo As HitTestInfo = C1FlexGrid1.HitTest(e.Location)
' 選択された行番号を保持する変数の更新
If selectedRows.Contains(htInfo.Row) Then
selectedRows.Remove(htInfo.Row)
' 選択済みの行の場合は選択状態を解除
C1FlexGrid1.Rows(htInfo.Row).Selected = False
Else
selectedRows.Add(htInfo.Row)
End If
' 変数に保持されている行番号の行の選択
For Each row As Integer In selectedRows
C1FlexGrid1.Rows(row).Selected = True
Next
' 再描画の再開
C1FlexGrid1.EndUpdate()
End Sub
End Class
◎サンプルコード(C#)
using System.Collections;
using C1.Win.C1FlexGrid;
namespace C1FlexGrid_SelectByMouse
{
public partial class Form1 : Form
{
ArrayList selectedRows = new ArrayList();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 選択モードの設定
c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ListBox;
}
private void c1FlexGrid1_MouseDown(object sender, MouseEventArgs e)
{
// 再描画の中断
c1FlexGrid1.BeginUpdate();
// マウスポインタ位置の行番号の取得
HitTestInfo htInfo = c1FlexGrid1.HitTest(e.Location);
// 選択された行番号を保持する変数の更新
if (selectedRows.Contains(htInfo.Row))
{
selectedRows.Remove(htInfo.Row);
// 選択済みの行の場合は選択状態を解除
c1FlexGrid1.Rows[htInfo.Row].Selected = false;
}
else
{
selectedRows.Add(htInfo.Row);
}
// 変数に保持されている行番号の行の選択
foreach (int row in selectedRows)
{
c1FlexGrid1.Rows[row].Selected = true;
}
// 再描画の再開
c1FlexGrid1.EndUpdate();
}
}
}
旧文書番号
84645