コンテキストメニューは、VBTextBox と VBComboBox で使用します。
実装するために必要な機能が各コントロールにあるか列挙してみます。
機能 | メソッド/プロパティ | VBTextBox | VBComboBox |
元に戻す | Undo | ○ | × |
Undoバッファ削除 | ClearUndo | ○ | × |
切り取り | Cut | ○ | × |
コピー | Copy | ○ | × |
貼り付け | Paste | ○ | × |
削除 | Delete | × | × |
すべて選択 | SelectAll | ○ | ○ |
IMEを開く(閉じる) | ImeOpenStatus | × | × |
再変換 | Reconvert | × | × |
×のところは、実装しなければなりません。(太字は新規)
それぞれの機能が使用可能かどうかでメニュー項目の Enabled プロパティを切り替えたいので、必要な機能を盛り込んだインターフェイスを作成します。
internal interface IVBContextMenuTarget
{
// プロパティ
bool CanUndo { get; }
IntPtr Handle { get; }
ImeMode ImeMode { get; }
bool ImeOpenStatus { get; set; }
bool ReadOnly { get; }
string SelectedText { get; }
int SelectionStart { get; }
int SelectionLength { get; }
string Text { get; }
// メソッド
void ClearUndo();
void Cut();
void Copy();
void Paste();
void Reconvert();
void SelectAll();
void Undo();
}