我在DataGridView
中预定了列。
有两个可编辑列和一个只读列。
我已将所有列格式设置为来自cellstyle builder
当我在两列中输入一些文本时,格式不会改变,但是只读列会改变。
所以我在cellformatting
事件上添加了格式更改,例如
Dim c As String
If e.ColumnIndex = colHrg.Index _
AndAlso e.Value IsNot Nothing AndAlso e.RowIndex >= 0 Then
c = e.Value.ToString
e.Value = c
End If
e.CellStyle.Format = "N3"
但似乎事件没有被触发,所以我决定在cellendedit
事件上添加格式样式。
然而,它仍然没有奏效
dgv_beli.Columns("colHrg").DefaultCellStyle.Format = "N3"
我还尝试了editingcontrolshowing
和cellvaluechanged
事件,但仍无效
有人可以指导我如何解决这个问题。我花了很多时间来解决这个问题,真的好奇为我的问题找到一个好的解决方案。
答案 0 :(得分:0)
示例:
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);
if (dataGridView1.CurrentCell.ColumnIndex == 0) //Desired Column
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress);
}
}
}
private void Column1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}