我有一个由组合框使用的dataTable。 dataTable有3行(x,y,z)。在组合框中,我选择第二项(y)。之后,我从dataTable中删除所选行。组合框中的所选行是最后一行(z)。
我希望组合框在删除行后选择第一行(x)或不选择任何内容(如果可能)。我该怎么办?
我问这个是因为我不知道哪些控件使用数据表。 组合框只是一个例子,展示了在最坏的情况下会发生什么。
public partial class Form1 : Form
{
DataTable dt1 = new DataTable();
public Form1()
{
InitializeComponent();
dt1 = MakeDT();
combo1.DataSource = dt1;
combo1.ValueMember = "Name";
combo1.BindingContext = new BindingContext();
combo1.DisplayMember = "Name2";
combo2.DataSource =dt1;
combo2.ValueMember = "Name";
combo2.BindingContext = new BindingContext();
combo2.DisplayMember = "Name2";
combo1.SelectedIndex = 1;
combo1.SelectedIndex = 2;
}
private DataTable MakeDT()
{
DataTable dt = new DataTable();
DataColumn col = new DataColumn("Name");
dt.Columns.Add(col);
col = new DataColumn("Name2");
dt.Columns.Add(col);
object[] p0 = { "Name0", "0" };
object[] p1 = { "Name1", "1" };
object[] p2 = { "Name2", "2" };
object[] p3 = { "Name3", "3" };
object[] p4 = { "Name4", "4" };
dt.Rows.Add(p0);
dt.Rows.Add(p1);
dt.Rows.Add(p2);
dt.Rows.Add(p3);
dt.Rows.Add(p4);
return dt;
}
private void button1_Click(object sender, EventArgs e)
{
dt1.Rows.RemoveAt(1);
}
}
我有一个带有dataTables的容器,许多控件从这个容器中获取数据源。当我刷新容器中的数据表时,控件中的数据源也会刷新,但我不想在已删除的行旁边选择。
答案 0 :(得分:0)
这将使他们选择索引为-1并且如果它是你的要求,那么你可以在按下按钮时检查selectedindex是否为-1然后做其他事情而不是删除组合结果。
private void button1_Click(object sender, EventArgs e)
{
dt.Rows.RemoveAt(comboBox1.SelectedIndex);
comboBox1.Refresh();
comboBox1.SelectedIndex = -1;
}