public class DataGridViewUpperCaseTextBoxColumn : DataGridViewTextBoxColumn {
public DataGridViewUpperCaseTextBoxColumn() : base() {
CellTemplate = new DataGridViewUpperCaseTextBoxCell();
}
}
public class DataGridViewUpperCaseTextBoxCell : DataGridViewTextBoxCell {
public DataGridViewUpperCaseTextBoxCell() : base() { }
public override Type EditType {
get {
return typeof(DataGridViewUpperCaseTextBoxEditingControl);
}
}
}
public class DataGridViewUpperCaseTextBoxEditingControl : DataGridViewTextBoxEditingControl {
public DataGridViewUpperCaseTextBoxEditingControl() : base() {
this.CharacterCasing = CharacterCasing.Upper;
}
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
// Check the value of the e.ColumnIndex property if you want to apply this formatting only so some rcolumns.
if (e.Value != null) {
e.Value = e.Value.ToString().ToUpper();
e.FormattingApplied = true;
}
}
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If TypeOf e.Control Is TextBox Then
DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
End If
End Sub
3条答案
按热度按时间bf1o4zei1#
恐怕没有标准的属性可以让你随心所欲地格式化文本。
如果您确实不想使用各种DGV事件来设置文本格式,您可以始终创建自己的DGV组件来完成所需的工作,并使用这些组件来代替标准的DGV组件。This article on MSDN应该可以帮助您入门。
这里有一个blog entry,来自一个自称HanSolo的人,它能满足你的需要。
下面是代码:
将此代码包含在项目中。执行此操作后,您将能够向DataGridView中添加类型为DataGridViewUpperCaseTextBoxColumn的新DataGridViewColumn。此新DataGridViewColumn将在列的TextBox组件中输入的所有文本大写。
你也应该重新考虑你不使用事件的决定。这很容易做到。例如,如果你有一个名为dataGridView1的DGV,你可以像这样使用CellFormatting事件:
eh57zj3b2#
编辑大写单元格的简单方法是在DataGridView中添加“EditingControlShowing”事件。
在此事件中,可以在DataGridViewEditingControlShowingEventArgs参数附带的控件中设置“CharacterCasing”属性。
此控件基于文本框,因此您可以像文本框一样工作!
如果列的类型与DataGridViewTextBoxColumn不同,则控件的基可能具有属性“CharacterCase”。
我希望我能帮到你。
伊塔洛
a5g8bdjr3#
在数据网格视图编辑控件显示“事件”中使用此简单方法