【发布时间】:2012-07-05 14:51:37
【问题描述】:
我是 WinForms 开发的新手,目前我正在维护一个用 .Net 2.0 开发的应用程序
在应用程序中,我有一个名为 Length 的列的网格,它以单位显示值。我使用CellFormatting事件格式化单元格值,否则只是数字。
但是当用户开始编辑我不希望显示单位时,应该只允许用户输入数字。
有没有直接的方法可以做到这一点?要在网格上设置的事件或属性?
【问题讨论】:
我是 WinForms 开发的新手,目前我正在维护一个用 .Net 2.0 开发的应用程序
在应用程序中,我有一个名为 Length 的列的网格,它以单位显示值。我使用CellFormatting事件格式化单元格值,否则只是数字。
但是当用户开始编辑我不希望显示单位时,应该只允许用户输入数字。
有没有直接的方法可以做到这一点?要在网格上设置的事件或属性?
【问题讨论】:
您应该在事件 DataGridView_CellFormatting 中设置单位
void DataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
int value;
if(e.Value != null && int.TryParse(e.Value.ToString(), out value))
{
e.Value = value.ToString("#mm");
}
}
}
【讨论】:
您可以使用 CellStyle Builder 设置格式字符串并将自定义格式设置为 # mm
怎么做:
【讨论】:
您应该处理EditingControlShowing 事件以更改当前单元格格式。
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 1)
{
e.CellStyle.Format = "#";
e.Control.Text = dataGridView1.CurrentCell.Value.ToString();
}
}
【讨论】: