掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DataGridViewのRaadOnly背景色を変えない (ID:145904)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
魔界の仮面弁士さん親切かつ丁寧なご説明ありがとうございます。 初心者で、上記の回答を理解するのに半日以上もかかりやっと直し終えました、 分ったようでも、完全に理解できたかどうかは不安です、下記にコードを修正 しましたので、よろしくお願いします。 Public Class Form1 Private activeCellStyle As DataGridViewCellStyle Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load activeCellStyle = New DataGridViewCellStyle() activeCellStyle.BackColor = Color.Yellow DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter DataGridView1.AllowUserToAddRows = False DataGridView1.ColumnCount = 2 DataGridView1.RowCount = 100 '全体の色 With DataGridView1.DefaultCellStyle .ForeColor = Color.DarkGreen .BackColor = Color.Lavender .SelectionForeColor = .ForeColor .SelectionBackColor = .BackColor End With '奇数行の色 With DataGridView1.AlternatingRowsDefaultCellStyle .BackColor = Color.White .SelectionBackColor = .BackColor End With DataGridView1.Columns(1).ReadOnly = True End Sub ''' <summary>セルがフォーカスされた時の処理です。</summary> Private Sub DataGridView1_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter ' セルの背景色を変更します。 If e.ColumnIndex >= 0 AndAlso e.RowIndex >= 0 Then sender.Item(e.ColumnIndex, e.RowIndex).Style = activeCellStyle End If End Sub ''' <summary>セルがフォーカスを失う時の処理です。</summary> Private Sub DataGridView1_CellLeve(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellLeave ' セルの背景色を変更します。 If e.ColumnIndex >= 0 AndAlso e.RowIndex >= 0 Then sender.Item(e.ColumnIndex, e.RowIndex).Style = Nothing End If End Sub Private Sub DataGridView1_CellValidated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidated Dim currentCell As DataGridViewCell = sender.Item(e.ColumnIndex, e.RowIndex) If currentCell Is Nothing Then Return End If If Not e.ColumnIndex = 0 Then Return Dim no As Integer Integer.TryParse(sender.Item(e.ColumnIndex, e.RowIndex).Value, no) Select Case no Case 0 sender.Item(e.ColumnIndex + 1, e.RowIndex).Value = "" Case 1 sender.Item(e.ColumnIndex + 1, e.RowIndex).Value = "鈴木" Case 2 sender.Item(e.ColumnIndex + 1, e.RowIndex).Value = "佐藤" Case Is > 2 sender.Item(e.ColumnIndex + 1, e.RowIndex).Value = "" End Select End Sub Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing Me.ActiveControl = e.Control End Sub End Class 前回の質問で > 氏名セルをクリックするとカーソルがなくなります、個人番号 > にカーソルを残す事はできないでしょうか? 説明が分かりずらくてすいません、もう一度説明したいと思います。 個人番号セル = Columns(0)、 氏名セル = Columns(1)、という意味です。 1行目の値 個人番号セル = "1" と 氏名セル = "鈴木" 2行目の値 個人番号セル = "2" と 氏名セル = "佐藤" と入力された状態で、現在は個人番号セル("2")にキャレットがあります、 氏名セル("鈴木")をクリックすると、キャレットが表示されなくなります、 その時キャレットをその行(クリックした行)の氏名セル("1")に強制的に 置くことは可能でしょうか? > そもそも DataGridView と DataGridView.EditingControl は別物です。 この回答の指す意味が理解できません、強制的に置くことは難しいと 言うことなのでしょうか。 またの質問、きりがなくて申し訳ありません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.