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

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

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

Re[2]: DataGridViewで行の再選択で選択解除するには


(過去ログ 81 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48146 / inTopicNo.1)  DataGridViewで行の再選択で選択解除するには
  
□投稿者/ はてな (1回)-(2010/03/25(Thu) 19:02:21)

分類:[.NET 全般] 

開発環境 VS2008

現在、タッチパネル操作用の画面を作成しています。
画面上に一覧表示ようのDataGridViewコントロールを配置しています。

選択された行を再選択した場合に、選択解除にするには
どのようにすればよいでしょうか。

申し訳ありませんがご教授願います。
引用返信 編集キー/
■48148 / inTopicNo.2)  Re[1]: DataGridViewで行の再選択で選択解除するには
□投稿者/ 魔界の仮面弁士 (1581回)-(2010/03/25(Thu) 19:34:33)
No48146 (はてな さん) に返信
> 選択された行を再選択した場合に、選択解除にするには
> どのようにすればよいでしょうか。

ListBox の SelectionMode のように切り替える機能は無さそうです。

MultiSelect = False、SelectionMode = FullRowSelect という前提になりますが、
こういう方法は如何でしょうか。

    Private Sub DataGridView1_MouseDown(ByVal sender As DataGridView, _
                ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
        Dim hit = sender.HitTest(e.X, e.Y)
        sender.Tag = Nothing
        If hit.Type = DataGridViewHitTestType.RowHeader OrElse _
           hit.Type = DataGridViewHitTestType.Cell Then
            If sender.Rows(hit.RowIndex).Selected Then
                sender.Tag = hit.RowIndex
            End If
        End If
    End Sub

    Private Sub DataGridView1_MouseUp(ByVal sender As DataGridView, _
                ByVal e As MouseEventArgs) Handles DataGridView1.MouseUp
        If TypeOf sender.Tag Is Integer Then
            sender.Rows(CInt(sender.Tag)).Selected = False
        End If
    End Sub

引用返信 編集キー/
■48149 / inTopicNo.3)  Re[2]: DataGridViewで行の再選択で選択解除するには
□投稿者/ はてな (2回)-(2010/03/25(Thu) 19:50:41)
No48148 (魔界の仮面弁士 さん) に返信
> ■No48146 (はてな さん) に返信
>>選択された行を再選択した場合に、選択解除にするには
>>どのようにすればよいでしょうか。
>
> ListBox の SelectionMode のように切り替える機能は無さそうです。
>
> MultiSelect = False、SelectionMode = FullRowSelect という前提になりますが、
> こういう方法は如何でしょうか。
>
> Private Sub DataGridView1_MouseDown(ByVal sender As DataGridView, _
> ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
> Dim hit = sender.HitTest(e.X, e.Y)
> sender.Tag = Nothing
> If hit.Type = DataGridViewHitTestType.RowHeader OrElse _
> hit.Type = DataGridViewHitTestType.Cell Then
> If sender.Rows(hit.RowIndex).Selected Then
> sender.Tag = hit.RowIndex
> End If
> End If
> End Sub
>
> Private Sub DataGridView1_MouseUp(ByVal sender As DataGridView, _
> ByVal e As MouseEventArgs) Handles DataGridView1.MouseUp
> If TypeOf sender.Tag Is Integer Then
> sender.Rows(CInt(sender.Tag)).Selected = False
> End If
> End Sub

回答ありがとうございます。
早速、教えて頂いた内容を実装し、実現できました。

大変助かりました!!
有難うございました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -