ステータスバーに現在選択されているメニュー項目の説明を表示する http://dobon.net/vb/dotnet/control/menuitemselect.html についての意見です。 現状FormのLoadイベントハンドラでPaintイベントを追加していますが、 この方法だとメニューを変更するたびにいじらなくちゃいけませんし、 ToolStripMenuItemのさらに子要素の説明は表示できません。 そこで、ハンドラをMenuStripのLayoutCompletedイベントで再帰的に追加するようにしてみました。 また、説明はToolTipTextのほうから取得するようにしています。 よければサンプルのほうに書いてもらえるとうれしいです。 private void mmsMain_LayoutCompleted(object sender, EventArgs e) { AddPaintHanderToTSMI(mmsMain.Items); } private void AddPaintHanderToTSMI(ToolStripItemCollection tsmic) { foreach (ToolStripItem tsi in tsmic) { ToolStripMenuItem tsmi = tsi as ToolStripMenuItem; if (tsmi == null) { continue; } tsmi.Paint += new PaintEventHandler(tsmi_Paint); AddPaintHanderToTSMI(tsmi.DropDownItems); } } void tsmi_Paint(object sender, PaintEventArgs e) { ToolStripMenuItem tsmi = sender as ToolStripMenuItem; if (tsmi == null || !tsmi.Selected) { return; } ToolStripStatusLabel1.Text = tsmi.ToolTipText + "が選択されています。"); }
分類:[.NET]