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

5n0oy7gb  于 2023-03-04  发布在  .NET
关注(0)|答案(3)|浏览(181)

我有一个自定义DataGridView控件,希望在设计器(CellStyle生成器)中设置自定义列的文本格式。
假设我想将文本格式设置为大写。搜索后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的。我想向所有设计的列添加新属性,然后设置或更改文本格式。
如何做到这一点?
谢谢并致以最好的问候。

bf1o4zei

bf1o4zei1#

恐怕没有标准的属性可以让你随心所欲地格式化文本。
如果您确实不想使用各种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; 
    } 
}

将此代码包含在项目中。执行此操作后,您将能够向DataGridView中添加类型为DataGridViewUpperCaseTextBoxColumn的新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;
     }
}
eh57zj3b

eh57zj3b2#

编辑大写单元格的简单方法是在DataGridView中添加“EditingControlShowing”事件。
在此事件中,可以在DataGridViewEditingControlShowingEventArgs参数附带的控件中设置“CharacterCasing”属性。
此控件基于文本框,因此您可以像文本框一样工作!
如果列的类型与DataGridViewTextBoxColumn不同,则控件的基可能具有属性“CharacterCase”。
我希望我能帮到你。
伊塔洛

a5g8bdjr

a5g8bdjr3#

在数据网格视图编辑控件显示“事件”中使用此简单方法

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

相关问题