カレント行のセルを取得、設定する

現在のセルの行番号、列番号、値を取得

カレント行のセルを下の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
公開
Loading