【问题标题】:How to set DataGridView columns text format to uppercase by adding new property?如何通过添加新属性将 DataGridView 列文本格式设置为大写?
【发布时间】:2011-01-01 09:15:53
【问题描述】:

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

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

如何做到这一点?

感谢和最好的问候。

【问题讨论】:

    标签: c# .net datagridview datagridviewtextboxcell


    【解决方案1】:

    恐怕没有标准的属性来格式化你想要的文本。

    如果您真的不想使用各种 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;
         }
    }
    

    【讨论】:

    • 谢谢杰,但你有具体的答案吗?我相信这只是一小段代码,但是如何准确地添加这个属性呢?
    【解决方案2】:

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

    在这种情况下,您可以在带有 DataGridViewEditingControlShowingEventArgs 参数的控件中设置“CharacterCasing”属性。

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

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

    希望对你有帮助。

    意大利

    【讨论】:

    • private void DataGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (DataGrid.CurrentCell.ColumnIndex == 2) { TextBox prodCode = e.Control as TextBox; prodCode.CharacterCasing = CharacterCasing.Upper; } }
    • or private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (dgv.EditingControl.GetType() == typeof(DataGridViewTextBoxEditingControl)) { ((DataGridViewTextBoxEditingControl)dgv.EditingControl).CharacterCasing = CharacterCasing。上; } }
    【解决方案3】:

    在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多