我有一个自定义 DataGridView 控件,并希望在设计器(CellStyle 构建器)中设置自定义列的文本格式。
假设我想将文本格式设为大写。在搜索了这个之后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的。我想向所有设计的列添加一个新属性,并在那里设置或更改文本格式。
这该怎么做?
谢谢和最好的问候。
我有一个自定义 DataGridView 控件,并希望在设计器(CellStyle 构建器)中设置自定义列的文本格式。
假设我想将文本格式设为大写。在搜索了这个之后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的。我想向所有设计的列添加一个新属性,并在那里设置或更改文本格式。
这该怎么做?
谢谢和最好的问候。
恐怕没有标准的属性来格式化你想要的文本。
如果您真的不想使用各种 DGV 事件来进行文本格式化,您始终可以创建自己的 DGV 组件来执行您想要的操作,并使用这些组件来代替标准 DGV 组件。 MSDN 上的这篇文章应该可以帮助您入门。
编辑
这是一个自称 HanSolo的博客条目,它可以满足您的需求。
这是代码:
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;
}
}
将此代码包含在您的项目中。完成此操作后,您将能够向 DataGridViewUpperCaseTextBoxColumn 类型的 DataGridView 添加一个新的 DataGridViewColumn。这个新的 DataGridViewColumn 将在列的 TextBox 组件中输入的所有文本大写。
您还应该重新考虑不使用事件的决定。这很容易做到。例如,如果您有一个名为 dataGridView1 的 DGV,您可以像这样使用 CellFormatting 事件:
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;
}
}
编辑大写单元格的简单方法是在 DataGridView 中添加“EditingControlShowing”事件。
在这种情况下,您可以在带有 DataGridViewEditingControlShowingEventArgs 参数的控件中设置“CharacterCasing”属性。
此控件基于文本框,因此您可以像文本框一样工作!
如果列的类型与 DataGridViewTextBoxColumn 不同,则控件的基础可能具有属性“CharacterCasing”。
我希望,我对你有帮助。
伊塔洛
在 DataGridView EditingControlShowing "Event" 中使用这个简单的方法
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