C#
ハマりポイント整理—旧式と新式の混在トラブル
出典: WinForms メニュー3兄弟 — MenuStrip / ToolStrip / ContextMenuStrip の使い分けと DataGridView 連携 — ハマりポイント整理—旧式と新式の混在トラブル
// ❌ NG:同一コントロールにContextMenuとContextMenuStrip両方設定
// myControl.ContextMenu = oldMenu; //旧式
// myControl.ContextMenuStrip = newStrip; //新式
// →動作は新式(ContextMenuStrip)が優先されるが、旧式のItemsは無視される
// ✅ OK:どちらか一方に揃える
myControl.ContextMenuStrip = newStrip;
//または
myControl.ContextMenu = oldMenu; //旧プロジェクトの保守でのみ
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「ハマりポイント整理—旧式と新式の混在トラブル」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件//デザイナでMenuStripを追加し、Itemsに「ファイル」「編集」「ヘルプ」を登録 //「ファイル」配下に「開く」「保存」「終了」サブメニュー public partial class MainForm : Form未収録
パターン1: MenuStrip —フォーム上部のメインメニュー
#a77c3de514d9
public partial class MainForm : Form { public MainForm() {未収録
パターン2: ToolStrip —アイコン付きツールバー
#0cc7fa434216
public partial class MasterForm : Form { public MasterForm() {未収録
パターン3: ContextMenuStrip + DataGridView —右クリック編集メニュー
#a8ee6da07168
private void rowContextMenu_Opening(object sender, CancelEventArgs e) { //メニュー全体をキャンセル(表示しない) if (masterGridView.CurrentRow == null)未収録
パターン4: ContextMenuStrip.Opening —動的な表示制御
#00a271c9dc03
//安全な切り替え myControl.ContextMenu = null; myControl.ContextMenuStrip = newStrip;未収録
ハマりポイント整理—旧式と新式の混在トラブル
#68f767bcd3df
