c# - 如何通过添加新属性将 DataGridView 列文本格式设置为大写?

标签 c# .net datagridview datagridviewtextboxcell

我有一个自定义 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/

相关文章:

c# - 将 float 转换为 decimal 在 C# 中会失去精度

c# - Azure 数据类型的本地结构和云处理之间的差异

mysql - 插入 MySql 数据库 DataGrid 值

c# - 不应加载引用程序集来执行。它们只能在仅反射加载器上下文中加载

c# - 在响应式(Reactive)编程中使用 Subject 的替代方案?

c# - 在 asp.net mvc 中读取 api 结果

c# - 为什么在实现 IEnumerator<T> 的类中需要 IEnumerator.Current?

android - 如何在 flutter 中显示来自外部存储路径的图像?

c# - BindingList<> ListChanged 事件

java - 为什么ArrayList创建时元素数组为空,而HashSet创建时表为空?