我被要求编写c#winforms应用程序,该应用程序将允许用户从复选框列表中选择选项,并让它自动重绘/重新绘制带有所选项目的工具条。
我是winforms的新手,所以我不确定如何处理它。我应该使用BackgroundWorker流程吗?无效()?
只是有点困惑。
任何指向正确方向的帮助都会受到赞赏。
答案 0 :(得分:1)
您可能不希望BackgroundWorker在非UI线程上运行,并且在您尝试修改工具条时会导致问题(您只能在创建UI的线程上使用UI)。处理复选框上的CheckedChanged事件,然后在工具条中添加或删除项目。重新绘制应该是自动的。
答案 1 :(得分:1)
您需要在某些位置保留所有选项的工具提示(如果复选框的标记属性是免费的,请将其放在那里)。然后,当选择或取消选择某个选项时,您需要更新工具提示。
假设您要在IList中添加所有复选框。然后事情将如下工作:
private IList<CheckBox> options= new List<CheckBox>();
private void UpdateTTip()
{
toolTip1.RemoveAll();
foreach (CheckBox c in options)
{
if (c.Checked)
toolTip1.SetToolTip(c, c.Tag.ToString());
}
}
现在您需要在 checkedchanged 选项复选框上调用此选项:
private void chk_CheckedChanged(object sender, EventArgs e)
{
UpdateTTip();
}
答案 2 :(得分:0)
工具条本身包含控件 - 它不仅仅是“画”按钮。为了让工具条根据不同的条件显示不同的按钮,您可以:
Visible = false
),并在检查列表框中选择时仅将必要的项目设置为Visible = true
无需做任何绘画: - )