datagridviewについて への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 うさぎ  (学生) 投稿日時 2011/11/28 17:41:53
ありがとうございました。
うまくいきました!
助かりましたm(__)m
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/11/28 15:52:12
「一方を選択した場合は、他方は選択解除したい」という意味の場合:

Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView1.SelectionChanged
    DataGridView2.ClearSelection()
End Sub

Private Sub DataGridView2_SelectionChanged(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView2.SelectionChanged
    DataGridView1.ClearSelection()
End Sub


-------------------------------------------------------
「同じデータを表示しているときに、カーソルの連動を止めたい」という意味の場合:

'修正前 
Public Class Form1
    Private ds As New DataSet()
    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load
        Dim tbl As DataTable = ds.Tables.Add("Table1")
        tbl.Columns.Add("Col1"GetType(Integer))
        For r As Integer = 1 To 20
            tbl.Rows.Add(r)
        Next

        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "Table1"

        DataGridView2.DataSource = ds
        DataGridView2.DataMember = "Table1"
    End Sub
End Class



'修正後 
Public Class Form1
    Private ds As New DataSet()
    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load
        Dim tbl As DataTable = ds.Tables.Add("Table1")
        tbl.Columns.Add("Col1"GetType(Integer))
        For r As Integer = 1 To 20
            tbl.Rows.Add(r)
        Next

        BindingSource0.DataSource = ds

        BindingSource1.DataSource = BindingSource0
        BindingSource1.DataMember = "Table1"
        DataGridView1.DataSource = BindingSource1

        BindingSource2.DataSource = BindingSource0
        BindingSource2.DataMember = "Table1"
        DataGridView2.DataSource = BindingSource2
    End Sub
End Class


-------------------------------------------------------

「TextBox.HideSelection = True のように、フォーカスが外れると選択状況を隠すが、
 フォーカスが戻ると元の選択状態に戻るようにしたい」という意味の場合:

Private Sub DataGridView1_Enter(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView1.Enter
    DataGridView1.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight
    DataGridView1.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText
End Sub

Private Sub DataGridView1_Leave(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView1.Leave
    DataGridView1.DefaultCellStyle.SelectionBackColor = DataGridView1.DefaultCellStyle.BackColor
    DataGridView1.DefaultCellStyle.SelectionForeColor = DataGridView1.DefaultCellStyle.ForeColor
End Sub


-------------------------------------------------------

「ListView.HideSelection = False のように、フォーカスがあるときとないときで
 選択されているセルの色が変更されるようにしたい」という意味の場合:

Private Sub DataGridView1_Enter(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView1.Enter
    DataGridView1.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight
    DataGridView1.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText
End Sub

Private Sub DataGridView1_Leave(ByVal sender As Object, _
        ByVal e As EventArgs) Handles DataGridView1.Leave
    DataGridView1.DefaultCellStyle.SelectionBackColor = SystemColors.ButtonFace
    DataGridView1.DefaultCellStyle.SelectionForeColor = SystemColors.ControlText
End Sub
投稿者 shu  (社会人) 投稿日時 2011/11/28 15:03:21
片方を選択したらもう片方を非選択状態にする。

例えば、こんな感じ
        For Each cell In DataGridView1.SelectedCells.OfType(Of DataGridViewCell)()
            cell.Selected = False
        Next
投稿者 うさぎ  (学生) 投稿日時 2011/11/27 23:02:57
VB2005を勉強中の者です。
Form上に2つのdatagridviewを配置しているのですが、datagridview1内のセルをクリックしdatagridview2内のセルをクリックすればどちらも選択されてしまいます。どちらか片方でしか選択できないようにしたいのですがどのようにすればいいのでしょうか。よろしくお願いいたします。