ユーザーがチェックボックスリストからオプションを選択し、選択したアイテムでツールストリップを自動的に再描画/再描画できるようにするc#winformsアプリを作成するように依頼されました。
私はwinformsに慣れていないので、どのようにアプローチするかわかりません。BackgroundWorkerプロセスを使用する必要がありますか?Invalidate()?
少し混乱しています。
正しい方向を指すのを助けていただければ幸いです。
ユーザーがチェックボックスリストからオプションを選択し、選択したアイテムでツールストリップを自動的に再描画/再描画できるようにするc#winformsアプリを作成するように依頼されました。
私はwinformsに慣れていないので、どのようにアプローチするかわかりません。BackgroundWorkerプロセスを使用する必要がありますか?Invalidate()?
少し混乱しています。
正しい方向を指すのを助けていただければ幸いです。
非UIスレッドで実行され、ツールストリップを変更しようとすると問題が発生するため、BackgroundWorkerはおそらく必要ありません(UIが作成されたスレッドでのみUIを操作できます)。チェックボックスのCheckedChangedイベントを処理してから、ツールストリップにアイテムを追加または削除します。再塗装は自動で行う必要があります。
すべてのオプションのツールチップをどこかに保持する必要があります (チェックボックスの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();
}
ツールストリップには、それ自体にコントロールが含まれています。押すことができるボタンを「ペイント」するだけではありません。ツールストリップにさまざまな条件に応じてさまざまなボタンを表示させるには、次のことができます。
Visible = false
たときに必要なものだけを設定しますVisible = true
絵を描く必要はありません:-)