Xử lý sự kiện cell click C#

Mình có cái DataGridView CellClick Event, khi click vào nó sẽ chọn lưu thông tin của sinh viên vào biến SelectedStudentId.
Nhưng khi mình chạy thì khi chọn có khi lưu đc khi không. Đã thư cho mbox show để kiểm tra trực tiếp khi click thì thấy nó lúc click thì show đc thông tin id và mssv của ô đó, khi thì không. Ai giúp mình với


Code hàm cell click Event

private void dataGWMain_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow row = new DataGridViewRow();
            row = dataGWMain.Rows[e.RowIndex];
            Main.SelectedStudentId = row.Cells[2].Value.ToString();
            MessageBox.Show(row.Cells[2].Value.ToString());
            MessageBox.Show(row.Cells[0].Value.ToString());
        }

Bạn thử đặt debug vào hàmdataGWMain_CellContentClick khi click vào cell mà nó k show ra xem có gặp vấn đề gì ở đó không.

Sau đó bạn thử đổi lại cách viết này xem :

MessageBox.Show(dataGWMain.Rows[e.RowIndex].Cells[2].Value.ToString());
MessageBox.Show(dataGWMain.Rows[e.RowIndex].Cells[0].Value.ToString());
2 Likes

Thử dùng cách kia vẫn như vậy bạn à, lúc đc lúc không. Search trên mạng thử dùng CellClick event hay vì CellContentClick vẫn ko đc.
Khi thử debug hàm đó thì lúc nó nhận cell click để chạy vào hàm lúc thì ko. Khi đã nhận cell click chạy vào đc hàm rồi thì mọi thứ trong hàm chạy ok lắm

Ví dụ cho bạn tự triển khai:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                ID = row.Cells[0].Value.ToString();
            }

À mà bạn dùng CellClick nhé, đừng dùng CellContentClick.

2 Likes

Mình chưa hiểu ý bạn lắm, nhưng sau 1 hồi search cả chục tab stack over flow thì đổi thành CellClick là ok nhất.

Try using the CellClick event instead:

Occurs when any part of a cell is clicked.
The CellContentClick event won’t necessarily fire when you click in the cell, the user has to click into the “content” area of the cell, like the text, for instance:

Occurs when the content within a cell is clicked.

1 Like

Đúng vậy. Vì CellContentClick thì bạn phải click vào nội dung - ở đây là text. Còn CellClick thì chỉ cần bạn click vào cell thôi. Đó là lý do lúc thì bắt được event, lúc thì không.

3 Likes

Mình củng gặp lỗi tương tự, đã đổi từ CellContentClick sang CellClick và chạy ổn, nhạy.
Củng giống [buithaiminh] nói; CellContentClick chỉ nhận cho các giá trị khi click là TEXT thôi. Còn CellClick thì nhận cho tất cả các giá trị trong DataGridView.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?