【问题标题】:Datagridview different handlers on each columnDatagridview 每列上的不同处理程序
【发布时间】:2018-02-05 10:43:50
【问题描述】:

我正在使用 datagridview 控件在 C# 上创建一个 .net 项目。

我的问题是我希望 datagridview 的每个列项都有不同的事件处理程序。我怎样才能做到这一点?

请帮忙!

【问题讨论】:

  • 您能解释一下为什么要在每列上使用“不同的事件处理程序”吗?你想处理什么类型的事件?
  • @Florian 例如,我希望第 3 列成为价格文本框列。因此,当我离开文本框时,$ 符号会显示在 value 旁边。并且还在 keydown 事件上阻止非数值
  • 您应该在 datagridview 上处理 CellLeave 和 KeyDown 事件 :-)
  • @Florian 是的,但我想要一个 NAME 列,它会有不同的 keydown 和 leave 事件。那是我的问题
  • 您需要将您的事件应用到一个控件上,在您的情况下,就是您的datagridview。在您的处理函数中,您可以为给定的列/行/等创建特定规则。我创建了一个基本示例

标签: c# mysql winforms


【解决方案1】:

你想处理两个事件:

CellLeave

KeyDown

当您处理事件时,您将使用对象参数,例如:

  • 发送者(Object类型)

  • e(在 CellLeave 的情况下为 DataGridViewCellEventArgs 类型)

  • e(在 KeyDown 的情况下为 System.Windows.Forms.KeyEventArgs 类型)

如果要为每列创建特定规则,可以使用 e 的属性。

例如:

DataGridView1_CellLeave(Object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        //DoStuff when leave first datagrid's column
    }
}

DataGridView1_KeyDown(Object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (e.KeyCode == Keys.Shift)
    {        
        //You can do stuff on DataGridView1.CurrentCell when Shift is pressed
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多