カレント行のセルを取得、設定する
現在のセルの行番号、列番号、値を取得

カレント行のセルを下のTextBoxに表示します。また「変更ボタン」クリックでカレント行をTextBoxの内容で書き換えます。
C1TrueDBGrid1.Columns("TokuisakiCD").Text (Value) の様に列のDataField名を指定するか、Index番号を指定します。
Public Class frmCurrentRowCell
Private dt As DataTable = Nothing
'''
''' グリッドの初期化
'''
'''
Private Sub InitializeGrid()
' スタイルを作成
Dim s As New C1.Win.C1TrueDBGrid.Style
s.ForeColor = Color.Blue
s.BackColor = Color.Yellow
s.Font = C1TrueDBGrid1.Style.Font
' カレントセルのスタイルとして追加
C1TrueDBGrid1.AddCellStyle(C1.Win.C1TrueDBGrid.CellStyleFlag.CurrentCell, s)
C1TrueDBGrid1.AlternatingRows = True
C1TrueDBGrid1.EvenRowStyle.BackColor = Color.LightSteelBlue
C1TrueDBGrid1.RowHeight = 18
End Sub
'''
''' サンプルデータ作成
'''
'''
Private Sub InitializeData()
Dim drow As DataRow
Dim i As Integer
dt = New DataTable
dt.Columns.Add("TokuisakiCD", GetType(String))
dt.Columns.Add("TokuisakiName", GetType(String))
For i = 0 To 99
drow = dt.NewRow
drow.Item(0) = (1000 + i).ToString
drow.Item(1) = "得意先" & (1000 + i).ToString
dt.Rows.Add(drow)
Next
End Sub
'''
''' TextBoxにセル内容をセット
'''
'''
Private Sub setText()
TextBox1.Text = C1TrueDBGrid1.Columns("TokuisakiCD").Text
TextBox2.Text = C1TrueDBGrid1.Columns("TokuisakiName").Text
End Sub
Private Sub frmCurrentRowCell_FormClosed( _
sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
If Not IsNothing(dt) Then
dt.Dispose()
End If
End Sub
Private Sub frmCurrentRowCell_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
InitializeGrid()
End Sub
'''
''' 変更ボタンクリック
'''
'''
'''
'''
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
C1TrueDBGrid1.Columns("TokuisakiCD").Text = TextBox1.Text
C1TrueDBGrid1.Columns("TokuisakiName").Text = TextBox2.Text
End Sub
'''
''' データ表示ボタンクリック
'''
'''
'''
'''
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
InitializeData()
C1TrueDBGrid1.SetDataBinding(dt, "", True)
C1TrueDBGrid1.Focus()
End Sub
Private Sub C1TrueDBGrid1_Enter(sender As Object, e As System.EventArgs) Handles C1TrueDBGrid1.Enter
If Not IsNothing(dt) Then
setText()
End If
End Sub
'''
''' TrueDBGrid : フォーカスが別のセルに移動すると発生
'''
'''
'''
'''
Private Sub C1TrueDBGrid1_RowColChange(sender As Object, e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles _
C1TrueDBGrid1.RowColChange
'行が変わった時だけTextBoxにセット
If Not e.LastRow = C1TrueDBGrid1.Row Then
setText()
End If
End Sub
End Class
ちなみに50行目は、
C1TrueDBGrid1.Columns("得意先CD").Text = TextBox1.Text
C1TrueDBGrid1.Columns(0).Text = TextBox1.Text
51行目は
C1TrueDBGrid1.Columns("得意先名").Text = TextBox1.Text
C1TrueDBGrid1.Columns(1).Text = TextBox1.Text
の様にも書けます。
履歴
- 2012/02/01
- 公開