c# 如何在 DataGridView 的特定列中强制使用大写?

标签 c# winforms datagridview

我希望能够将指定列的 CharacterCasing 设置为大写。

我在任何地方都找不到将字符转换为大写字母的解决方案在输入时

非常感谢您的帮助

最佳答案

您需要使用 Datagridview 的 EditingControlShowing 事件来编辑列中任何单元格的内容。使用此事件,您可以在特定单元格中触发按键事件。在按键事件中,您可以强制执行一个自动将小写字母转换为大写字母的规则。

实现的步骤如下:

在 EditingControlShowing 事件中查看用户是否在您要强制执行此规则的列中。假设您的列是网格中的第二列

private void TestDataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if(TestDataGridView.CurrentCell.ColumnIndex.Equals(1))
    {
        e.Control.KeyPress += Control_KeyPress; // Depending on your requirement you can register any key event for this.
    }
}

private static void Control_KeyPress(object sender, KeyPressEventArgs e)
{
    // Write your logic to convert the letter to uppercase
}

如果要在列中设置文本框控件的CharacterCasing属性,那么可以在上面代码中的KeyPress事件注册处进行,即位于检查列索引的“if” block 中。在这种情况下,您可以避免 KeyPress 事件。

这可以通过以下方式完成:

if(e.Control is TextBox)
{
  ((TextBox) (e.Control)).CharacterCasing = CharacterCasing.Upper;
}

关于c# 如何在 DataGridView 的特定列中强制使用大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178284/

相关文章:

c# - 我应该使用 PictureBox 还是 Panel 在我的表单上绘图?

c# - 有没有一种简单的方法来合并登录屏幕?

c# - 在自定义 datagridviewCell 上验证单元格的值

c# - 如何在不显式指定 InjectionConstructor 中的每个参数的情况下将 Decorator Pattern 与 Unity 一起使用

c# - 数据隐藏是什么意思

.net - 如何处理 Windows 窗体 datetimepicker ArgumentOutOfRangeException?

c# - 允许在 dataGridview 中选择行但不允许选择单元格

c# - DataGridview 搜索 : show only searchresult and hide other rows?

c# - Asp.net mvc Sp​​ecified UserAgent no session Id

c# - LINQ over XAML 提供程序