我被要求编写 c# winforms 应用程序,它使用户能够从复选框列表中选择选项,并让它自动重绘/重绘带有所选项目的工具条。
我是winforms的新手,所以我不知道如何处理它。我应该使用 BackgroundWorker 进程吗?无效()?
只是有点迷茫。
任何指向正确方向的帮助将不胜感激。
我被要求编写 c# winforms 应用程序,它使用户能够从复选框列表中选择选项,并让它自动重绘/重绘带有所选项目的工具条。
我是winforms的新手,所以我不知道如何处理它。我应该使用 BackgroundWorker 进程吗?无效()?
只是有点迷茫。
任何指向正确方向的帮助将不胜感激。
您需要在某个位置保留所有选项的工具提示(如果复选框的Tag属性是免费的,则将其放在那里)。Then when an option is selected or deselected, you need to update tooltips.
假设您要在 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();
}
您可能不想要 BackgroundWorker,因为它在非 UI 线程上运行,并且在您尝试修改工具条时会导致问题(您只能在创建 UI 的线程上使用 UI)。处理复选框上的 CheckedChanged 事件,然后在工具条中添加或删除项目。重绘应该是自动的。
工具条本身包含控件——它不只是“绘制”您可以按下的按钮。为了让工具条根据不同的条件显示不同的按钮,您可以:
Visible = false
将必要的设置为Visible = true
不需要做任何绘画:-)