C# datagridview получает текущее значение ячейки перед значением Drag & Drop - PullRequest
1 голос
/ 17 января 2020

У меня есть dgv и richtextbox. пользователь может выбрать имя из rtb и перетащить в ячейку в dgv. у меня это работает нормально, если в текущей ячейке нет значения, в которое они попадают. однако, если ячейка имеет значение, и они сбрасывают значение над этой ячейкой, я теряю предыдущее значение. Вот мой код DragDrop

if (e.Data.GetDataPresent(typeof(System.String)))
        {
            Point clientPoint = gridViewRaces.PointToClient(new Point(e.X, e.Y));
            gridViewRaces.Rows[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).RowIndex].Cells[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).ColumnIndex].Value =
            (System.String)e.Data.GetData(typeof(System.String));
        }

до того, как значение будет вставлено в ячейку. Я хотел бы иметь возможность получить текущее значение, если оно присутствует следующим образом.

string currentValue = gridViewRaces.Rows[e.Y].Cells[e.X].Value.ToString();

любая помощь будет принята с благодарностью !!

1 Ответ

1 голос
/ 17 января 2020

Через несколько часов, потянув меня за волосы, я наконец понял, что у меня есть ответ весь F ***** G раз.

Это был код, который вставляет перетаскиваемые значения -

if (e.Data.GetDataPresent(typeof(System.String)))
    {
        Point clientPoint = gridViewRaces.PointToClient(new Point(e.X, e.Y));
        gridViewRaces.Rows[gridViewRaces.HitTest(clientPoint.X,
        clientPoint.Y).RowIndex].Cells[gridViewRaces.HitTest(clientPoint.X,
        clientPoint.Y).ColumnIndex].Value =
        (System.String)e.Data.GetData(typeof(System.String));
    }

и чтобы получить предыдущее значение до того, как будет вставлено новое значение, все, что мне нужно было сделать, это:

string previousValue = gridViewRaces.Rows[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).RowIndex].Cells[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).ColumnIndex].Value.ToString();

            gridViewRaces.Rows[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).RowIndex].Cells[gridViewRaces.HitTest(clientPoint.X,
            clientPoint.Y).ColumnIndex].Value =
            (System.String)e.Data.GetData(typeof(System.String));

надеюсь, что это когда-нибудь кому-нибудь поможет.

...