カレント行のセルを取得、設定する
現在のセルの行番号、列番号、値を取得
カレント行のセルを下の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
- 公開