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

时间:2010-01-04 19:51:52

标签: c# .net datagridview datagridviewtextboxcell

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

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

怎么做?

感谢和最好的问候。

3 个答案:

答案 0 :(得分:9)

我担心没有标准属性可以根据需要格式化文本。

如果您真的不想使用各种DGV事件来进行文本格式化,您可以随时创建自己的DGV组件,并按照标准DGV组件使用它们。 This article on MSDN应该让你开始。

修改

这是来自自称为HanSolo的人的blog entry,可以满足您的需求。

以下是代码:

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; 
    } 
}

在项目中包含此代码。完成后,您将能够将新的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;
     }
}

答案 1 :(得分:7)

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

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

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

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

我希望,我帮助过你。

伊塔洛

答案 2 :(得分:0)

在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