加载对话框后重置数据网格视图的选定行
本文关键字:视图 网格 对话框 置数据 加载 | 更新日期: 2023-09-27 18:32:18
我有一个对话框,它基于System.Windows.Forms.Form
.它包含一个控制DataGridView
。我填写此DataGridView
,然后选择任何行。后来称我为我表单的方法ShowDialog
。表单出现后,我可以看到选定的第一行DataGridView
,但我想要的行没有被选中。如何解决此问题?我不希望在方法中选择OnLoad
下面是我的代码。
DgvDataSource dgvDs = new DgvDataSource(); DgvForm dgvF = new DgvForm(); dgvF.DataSource = dgvDs; dgvF.SelectRows(new int[] { 3, 5, 7, 9, 10}); dgvF.ShowDialog(); public class DgvForm : Form { public DgvForm() { InitializeComponent(); } DgvDataSource dataSource; public DgvDataSource DataSource { get { return myDataGridView.DataSource; } set { myDataGridView.DataSource = value; } } public void SelectRows(int[] indexes) { myDataGridView.ClearSelection(); foreach (DataGridViewRow r in dataGridView1.Rows) { r.Cells[0].Selected = indexes.Contains(r.Index); } } } public class DgvDataSource { public BindingList<DgvItem> Items { get; private set; } public DgvDataSource() { InitItems(); } void InitItems() { Items = new BindingList<DgvItem>(); for (int i = 0; i < 20; i++) { Items.Add(new DgvItem() { Id = i + 1, Description = "Description " + (i+1).ToString() }); } } } public class DgvItem { public int Id { get; set; } public string Description { get; set; } }
将 SelectRows 放在对话框窗体的加载事件中。创建实例时,设置 int[] 属性:
DgvForm dgvF = new DgvForm();
//this property should be in the Dialog Form
dgvF.Selection = new int[] { 3, 5, 7, 9, 10};
dgvF.ShowDialog();
Luego en el Form:
private int[] selection;
public int[] Selection
{
get { return selection; }
set { selection = value; }
}
private void Form1_Load(object sender, EventArgs e)
{
//Put your code here, to load DataSource and Select Rows.
}