【发布时间】:2018-04-12 22:52:51
【问题描述】:
我有一个组合框使用的数据表。数据表有 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 的容器,许多控件从这个容器中获取数据源。当我刷新容器中的数据表时,控件中的数据源也会刷新,但我不想选择已删除行旁边的选项。
【问题讨论】:
-
请阅读How to Ask 并发布您的代码。解释你的代码甚至不如展示它有效。特别是当您使用 2 种不同的编程语言标记您的问题时。
-
发布您尝试解决问题的代码。我们很乐意为您提供帮助!
-
您无法设置任何属性来自动执行此操作。它可能以它的方式发生,因为这意味着
SelectedIndex保持不变。为了得到你想要的行为,你需要写来做。鉴于您无论如何都必须删除代码中的项目,这应该不是问题。继续这样做,如果您在这样做时遇到特定问题,则可以发布适当的问题。