0

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

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

只是有点迷茫。

任何指向正确方向的帮助将不胜感激。

4

3 回答 3

1

您需要在某个位置保留所有选项的工具提示(如果复选框的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();
    }
于 2009-07-08T13:01:51.020 回答
1

您可能不想要 BackgroundWorker,因为它在非 UI 线程上运行,并且在您尝试修改工具条时会导致问题(您只能在创建 UI 的线程上使用 UI)。处理复选框上的 CheckedChanged 事件,然后在工具条中添加或删除项目。重绘应该是自动的。

于 2009-07-08T12:48:05.957 回答
0

工具条本身包含控件——它不只是“绘制”您可以按下的按钮。为了让工具条根据不同的条件显示不同的按钮,您可以:

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

不需要做任何绘画:-)

于 2009-07-08T12:49:27.607 回答