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

Joo*_*ooj 2 .net c# datagridview datagridviewtextboxcell

我有一个自定义DataGridView控件,并希望在设计器(CellStyle构建器)中设置自定义列的文本格式.

假设我想将文本格式设置为大写.在搜索了这个之后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的.我想为所有设计的列添加一个新属性,并设置或更改文本格式.

这该怎么做?

谢谢,最好的问候.

Jay*_*ggs 9

我担心没有标准属性来格式化文本你想要的方式.

如果您真的不想使用各种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; 
    } 
}
Run Code Online (Sandbox Code Playgroud)

在项目中包含此代码.完成后,您将能够将新的DataGridViewColumn添加到DataGridViewUpperCaseTextBoxColumn类型的DataGridView中.这个新的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;
     }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

以大写形式编辑单元格的简单方法是在DataGridView中添加"EditingControlShowing"事件.

在这种情况下,您可以在随DataGridViewEditingControlShowingEventArgs参数一起提供的控件中设置'CharacterCasing'属性.

此控件基于文本框,因此您可以像TextBox一样工作!

如果列的类型与DataGridViewTextBoxColumn不同,则控件的基础可能具有属性"CharacterCasing".

我希望,我帮助过你.

伊塔洛

  • 或私有void dgv_EditingControlShowing(对象发送者,DataGridViewEditingControlShowingEventArgs e){如果(dgv.EditingControl.GetType()== typeof(DataGridViewTextBoxEditingControl)){(((DataGridViewTextBoxEditingControl)dgv.EditingControl).CharacterCasing = CharacterCasing.Upper; }} (2认同)