DOBON.NETプログラミング道掲示板

■35627 / 1階層)  DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ 魔界の仮面弁士 大御所(1576回)-(2024/09/20(Fri) 18:58:46)
  • アイコン
    No35626に返信(HKaneさんの記事)
    > 1行のみ、または、連続行選択のみを許し、
    > 例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?
    
    泥臭い方法しか思いつきませんでした。
    
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DataGridView1.AllowUserToAddRows = False
            DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
            DataGridView1.ColumnCount = 10
            DataGridView1.RowCount = 1000
        End Sub
    
        Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            Dim selectedRows = DataGridView1.SelectedRows.OfType(Of DataGridViewRow)().ToArray()
            Dim firstRow = selectedRows.FirstOrDefault()
            Dim lastRow = selectedRows.LastOrDefault()
            If If(firstRow, lastRow) Is Nothing Then
                Return
            End If
            Dim firstRowIndex = selectedRows.Min(Function(r) r.Index)
            Dim lastRowIndex = selectedRows.Max(Function(r) r.Index)
            If selectedRows.Length < (lastRowIndex - firstRowIndex) + 1 Then
                Dim unselectedRows = DataGridView1.Rows.Cast(Of DataGridViewRow)() _
                    .Skip(firstRowIndex) _
                    .Take(lastRowIndex - firstRowIndex + 1) _
                    .Where(Function(r) Not r.Selected) _
                    .ToArray()
                For Each row In unselectedRows
                    row.Selected = True
                Next
            End If
        End Sub
    End Class

違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DataGridViewの複数行選択で歯抜け選択を無効にしたい /HKane 返信無し
 
上記関連ツリー

Nomalアイコン DataGridViewの複数行選択で歯抜け選択を無効にしたい / HKane (24/09/20(Fri) 15:16) #35626
Nomalアイコン DataGridViewの複数行選択で歯抜け選択を無効にしたい / 魔界の仮面弁士 (24/09/20(Fri) 18:58) #35627 ←Now
Nomalアイコン Re[1]: DataGridViewの複数行選択で歯抜け選択を無効にしたい / KOZ (24/09/21(Sat) 18:58) #35628

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

Mode/  Pass/


- Child Tree -