0

ユーザーがチェックボックスリストからオプションを選択し、選択したアイテムでツールストリップを自動的に再描画/再描画できるようにするc#winformsアプリを作成するように依頼されました。

私はwinformsに慣れていないので、どのようにアプローチするかわかりません。BackgroundWorkerプロセスを使用する必要がありますか?Invalidate()?

少し混乱しています。

正しい方向を指すのを助けていただければ幸いです。

4

3 に答える 3

1

非UIスレッドで実行され、ツールストリップを変更しようとすると問題が発生するため、BackgroundWorkerはおそらく必要ありません(UIが作成されたスレッドでのみUIを操作できます)。チェックボックスのCheckedChangedイベントを処理してから、ツールストリップにアイテムを追加または削除します。再塗装は自動で行う必要があります。

于 2009-07-08T12:48:05.957 に答える
1

すべてのオプションのツールチップをどこかに保持する必要があります (チェックボックスのTagプロパティが空いている場合はそこに置きます)。次に、オプションが選択または選択解除されたときに、ツールチップを更新する必要があります。

すべてのチェックボックスを 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 に答える
0

ツールストリップには、それ自体にコントロールが含まれています。押すことができるボタンを「ペイント」するだけではありません。ツールストリップにさまざまな条件に応じてさまざまなボタンを表示させるには、次のことができます。

  1. ツールストリップアイテムをクリアし、言及したリストでアイテムがチェックされたときに、コードで現在のコンテキストで必要なアイテムを再作成します
  2. すべてのアイテムと設計時間を(プロパティを使用して)追加し、チェックリストボックスで選択しVisible = falseたときに必要なものだけを設定しますVisible = true

絵を描く必要はありません:-)

于 2009-07-08T12:49:27.607 に答える