根据选择重绘工具条

时间:2009-07-08 12:43:38

标签: c# winforms refresh backgroundworker

我被要求编写c#winforms应用程序,该应用程序将允许用户从复选框列表中选择选项,并让它自动重绘/重新绘制带有所选项目的工具条。

我是winforms的新手,所以我不确定如何处理它。我应该使用BackgroundWorker流程吗?无效()?

只是有点困惑。

任何指向正确方向的帮助都会受到赞赏。

3 个答案:

答案 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)

工具条本身包含控件 - 它不仅仅是“画”按钮。为了让工具条根据不同的条件显示不同的按钮,您可以:

  1. 清除工具条项目,并在您提及的列表中检查项目时,在代码中重新创建当前上下文中所需的项目
  2. 添加所有项目和设计时间(使用属性Visible = false),并在检查列表框中选择时仅将必要的项目设置为Visible = true
  3. 无需做任何绘画: - )