掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DataGridViewでのセル値編集 (ID:144321)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
幾つかの方法があるかと思いますが、たとえば、DataGridView のイベントではなく DataGridViewTextBoxEditingControl のものを使うようにするとか。 Public Class Form1 Private dgv1 As New DataGridView() WithEvents Text1 As DataGridViewTextBoxEditingControl Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load AddHandler dgv1.EditingControlShowing, AddressOf dgv1_EditingControlShowing dgv1.Dock = DockStyle.Fill dgv1.AllowUserToAddRows = False dgv1.RowCount = 3 dgv1.ColumnCount = 3 dgv1.EditMode = DataGridViewEditMode.EditOnEnter dgv1.DefaultCellStyle.Font = New Font("MS Gothic", 15) Controls.Add(dgv1) dgv1(1, 0).Value = "11:22" dgv1(1, 1).Value = "12:34" dgv1(1, 2).Value = "23:59" End Sub Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shown dgv1.CurrentCell = dgv1(1, 1) End Sub Sub dgv1_EditingControlShowing(ByVal sender As Object, _ ByVal e As DataGridViewEditingControlShowingEventArgs) RemoveHandler dgv1.EditingControlShowing, AddressOf dgv1_EditingControlShowing Text1 = DirectCast(e.Control, DataGridViewTextBoxEditingControl) End Sub Sub Text1_Enter(ByVal sender As Object, ByVal e As EventArgs) Handles Text1.Enter If Text1.TextLength > 0 Then Text1.Text = Text1.Text.Replace(":", "") End If End Sub Sub Text1_Leave(ByVal sender As Object, ByVal e As EventArgs) Handles Text1.Leave Dim c As DataGridViewCell = Text1.EditingControlDataGridView.CurrentCell c.ErrorText = Nothing Dim i As Integer If Integer.TryParse(Text1.Text, i) Then Text1.Text = i.ToString("#0:00") ElseIf Text1.TextLength > 0 Then c.ErrorText = "非数値" End If End Sub End Class
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.