我有一个自定义 DataGridView 控件,想在设计器(CellStyle 生成器)中设置自定义列的文本格式。
假设我想将文本格式设置为大写。对此进行搜索后,我找到了一些解决方案,包括添加新事件然后更改文本格式,但这不是我想要的。我想为所有设计的列添加一个新属性,并在那里设置或更改文本格式。
如何做到这一点?
谢谢并致以最诚挚的问候。
最佳答案
恐怕没有您想要的格式化文本的标准属性。
如果您真的不想使用各种 DGV 事件来设置文本格式,您始终可以创建自己的 DGV 组件来执行您想要的操作,并使用这些组件代替标准 DGV 组件。 This article on MSDN应该让你开始。
编辑
这是一个 blog entry来自自称 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;
}
}
关于c# - 如何通过添加新属性将 DataGridView 列文本格式设置为大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001754/