如何从 Cell_Leave 事件中获取 DataGridViewCell 的值?

发布于 2024-11-05 15:55:25 字数 626 浏览 2 评论 0原文

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex > 1)
    {
        int cellValue = Convert.ToInt32(((DataGridViewCell)sender).Value);

        if (cellValue < 20)
        {
            ((DataGridViewCell)sender).Value = 21;
        }   
    }
}

我正在尝试获取事件触发的单元格的值。

当我尝试将 sender 转换为 DataGridViewCell 时,会引发异常:

无法转换类型的对象 'System.Windows.Forms.DataGridView' 到 类型 'System.Windows.Forms.DataGridViewCell'。

你建议我做什么?

我需要检查该值是否小于 20,如果是,则将其提高到 21。

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex > 1)
    {
        int cellValue = Convert.ToInt32(((DataGridViewCell)sender).Value);

        if (cellValue < 20)
        {
            ((DataGridViewCell)sender).Value = 21;
        }   
    }
}

I'm trying to get the value of the cell that the event fired from.

An exception is fired when I try to cast sender to a DataGridViewCell:

Unable to cast object of type
'System.Windows.Forms.DataGridView' to
type
'System.Windows.Forms.DataGridViewCell'.

What do you recommend I do?

I need to check if the value is less than 20, and if it is, bump it up to 21.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

朱染 2024-11-12 15:55:25

尝试使用theDataGrid[e.RowIndex, e.ColumnIndex].Value。我预计发送者更有可能是 DataGridView 对象而不是单元格本身。

Try working with theDataGrid[e.RowIndex, e.ColumnIndex].Value. I'd expect that the sender is more likely to be the DataGridView object rather than the cell itself.

弥繁 2024-11-12 15:55:25
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells[1].Value != null)
            {
                int cellmarks = Convert.ToInt16(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
                if (cellmarks < 32)
                {
                    dataGridView1.Rows[e.RowIndex].Cells[2].Value = "Fail";
                }
                else
                {
                    dataGridView1.Rows[e.RowIndex].Cells[2].Value = "Pass";
                }

            }
        }

此代码将获取当前单元格值。这可能对您有帮助。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells[1].Value != null)
            {
                int cellmarks = Convert.ToInt16(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
                if (cellmarks < 32)
                {
                    dataGridView1.Rows[e.RowIndex].Cells[2].Value = "Fail";
                }
                else
                {
                    dataGridView1.Rows[e.RowIndex].Cells[2].Value = "Pass";
                }

            }
        }

This code will get currentcell value.may this help you.

缺⑴份安定 2024-11-12 15:55:25

您可以获得单元格的值

dataGridView1[e.ColumnIndex, e.RowIndex].FormattedValue;

You can get the value of the cell as

dataGridView1[e.ColumnIndex, e.RowIndex].FormattedValue;
老街孤人 2024-11-12 15:55:25

发送者的类型是 DataGridView,因此您可以使用以下行:

int cellValue = Convert.ToInt32(((DataGridView)sender).SelectedCells[0].Value);

sender's type is DataGridView, so you may use the following line:

int cellValue = Convert.ToInt32(((DataGridView)sender).SelectedCells[0].Value);
妳是的陽光 2024-11-12 15:55:25

我对 _CellClick 事件做了一个轻微的变体。

private void Standard_CellClick(object sender, DataGridViewCellEventArgs e)
  {
     if (e.RowIndex >= 0)
     {
        int intHeaderId = 0;
        switch (((DataGridView)sender).Columns[e.ColumnIndex].Name)
        {
           case "grcHeaderId":
              intHeaderId = (int)grvEnteredRecords[grcHeaderId.Index, e.RowIndex].Value;
              break;
...

I did a slight variant for a _CellClick event.

private void Standard_CellClick(object sender, DataGridViewCellEventArgs e)
  {
     if (e.RowIndex >= 0)
     {
        int intHeaderId = 0;
        switch (((DataGridView)sender).Columns[e.ColumnIndex].Name)
        {
           case "grcHeaderId":
              intHeaderId = (int)grvEnteredRecords[grcHeaderId.Index, e.RowIndex].Value;
              break;
...
坏尐絯℡ 2024-11-12 15:55:25

我建议使用 EditedFormattedValue 属性获取单元格的值,因为在我的测试中,我输入的 FormattedValue 始终为 null。

I suggest getting the value of the cell using the EditedFormattedValue property, since in my testing the FormattedValue that I have entered is always null.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文