Tôi muốn OpenFileDialog xuất hiện khi người dùng nhấp vào một ô, sau đó hiển thị kết quả trong ô.DataGridView ném "InvalidOperationException: Operation không hợp lệ ..." khi thêm một hàng
Tất cả đều hoạt động, ngoại trừ việc DataGridView hiển thị một hàng bổ sung, để thêm giá trị vào danh sách được liên kết. Hàng hiển thị nếu dataGridView.AllowUserToAddNewRows == true
, đó là những gì tôi muốn. Những gì tôi không muốn là cho các ứng dụng sụp đổ khi hàng đó được chỉnh sửa theo chương trình; thay vào đó, nó nên làm chính xác những gì nó sẽ làm gì nếu người dùng đã chỉnh sửa hàng đó bằng tay (thêm hàng mới vào danh sách cơ bản, đẩy một hàng trống khác vào lưới để thêm giá trị).
Tôi đọc về SendKeys.Send(), điều này sẽ làm cho DataGridView hoạt động chính xác như thể người dùng đã nhập giá trị vào; tuy nhiên, nó cũng không hoạt động. Đây là những gì tôi đang cố gắng:
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
dataGridView1.CurrentCell = cell;
//simply doing a cell.Value = etc. will cause the program to crash
cell.ReadOnly = false;
dataGridView1.Columns[cell.ColumnIndex].ReadOnly = false;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
dataGridView1.BeginEdit(true);
SendKeys.Send(openFileDialog1.FileName + "{Enter}");
dataGridView1.EndEdit();
cell.ReadOnly = true;
dataGridView1.Columns[cell.ColumnIndex].ReadOnly = true;
}
//I would expect the FileName would be in the cell now, and a new empty
//row tacked onto the end of the DataGridView, but it's not; the DataGridView
//is not changed at all.
Loại ngoại lệ nào bạn nhận được khi bạn đặt 'cell.Value'? –
@Zach: Khi tôi nhấp vào ô trống, nó sẽ điền vào giá trị chính xác nhưng không thêm hàng trống khác. Khi tôi nhấp chuột ra khỏi hàng, các giá trị trong tất cả các ô trên hàng cuối cùng biến mất (điều này chỉ xảy ra cho hàng cuối cùng đó). Khi tôi sau đó bấm vào hàng cuối cùng một lần nữa, tôi nhận được một InvalidOperationException: "Hoạt động không hợp lệ do trạng thái hiện tại của đối tượng." dataGridView1_CellClick là sự kiện duy nhất tôi đang xử lý trên biểu mẫu đó (được hiển thị ở trên) –