ContextMenu.SourceControl プロパティ
ショートカット メニューを表示しているコントロールを取得します。
Public ReadOnly Property SourceControl As Control
[C#]
public Control SourceControl {get;}
[C++]
public: __property Control* get_SourceControl();
[JScript]
public function get SourceControl() : Control;
プロパティ値
ショートカット メニューを表示しているコントロールを表す Control 。ショートカット メニューを表示しているコントロールがない場合、このプロパティは null 参照 (Visual Basic では Nothing) を返します。
解説
このプロパティを使用すると、 ContextMenu で定義されたショートカット メニューを現在表示しているコントロールを確認できます。ショートカット メニューが現在表示されていない場合は、このプロパティを使用して、どのコントロールがショートカット メニューを最後に表示したかを確認できます。このプロパティを Popup イベントで使用すると、コントロールで適切なメニュー項目を表示できます。また、このプロパティを使用して、コントロールへの参照をメソッドに渡し、ショートカット メニューで表示されたメニュー コマンドに関連付けられているタスクを実行することもできます。 Form クラスは Control から継承されるため、 ContextMenu がフォームに関連付けられている場合にもこのプロパティを使用できます。
使用例
[Visual Basic, C#, C++] ContextMenu の Popup イベントのイベント ハンドラを作成する例を次に示します。このイベント ハンドラのコードは、ショートカット メニューを表示しているコントロールが pictureBox1
という名前の PictureBox コントロールと textBox1
という名前の TextBox コントロールのどちらであるかを判断します。どちらのコントロールが ContextMenu のショートカット メニューを表示したかに応じて、適切な MenuItem オブジェクトが ContextMenu に追加されます。この例は、フォーム内で定義されている contextMenu1
という名前の ContextMenu クラスのインスタンスが既にあることを前提にしています。この例は、 TextBox と PictureBox がフォームに追加され、これらのコントロールの ContextMenu プロパティが contextMenu1
に設定されていることも前提にしています。
Protected Sub MyPopupEventHandler(sender As System.Object, e As System.EventArgs)
' Define the MenuItem objects to display for the TextBox.
Dim menuItem1 As New MenuItem("&Copy")
Dim menuItem2 As New MenuItem("&Find and Replace")
' Define the MenuItem object to display for the PictureBox.
Dim menuItem3 As New MenuItem("C&hange Picture")
' Clear all previously added MenuItems.
contextMenu1.MenuItems.Clear()
If contextMenu1.SourceControl Is textBox1 Then
' Add MenuItems to display for the TextBox.
contextMenu1.MenuItems.Add(menuItem1)
contextMenu1.MenuItems.Add(menuItem2)
ElseIf contextMenu1.SourceControl Is pictureBox1 Then
' Add the MenuItem to display for the PictureBox.
contextMenu1.MenuItems.Add(menuItem3)
End If
End Sub 'MyPopupEventHandler '
[C#]
protected void MyPopupEventHandler(System.Object sender, System.EventArgs e)
{
// Define the MenuItem objects to display for the TextBox.
MenuItem menuItem1 = new MenuItem("&Copy");
MenuItem menuItem2 = new MenuItem("&Find and Replace");
// Define the MenuItem object to display for the PictureBox.
MenuItem menuItem3 = new MenuItem("C&hange Picture");
// Clear all previously added MenuItems.
contextMenu1.MenuItems.Clear();
if(contextMenu1.SourceControl == textBox1)
{
// Add MenuItems to display for the TextBox.
contextMenu1.MenuItems.Add(menuItem1);
contextMenu1.MenuItems.Add(menuItem2);
}
else if(contextMenu1.SourceControl == pictureBox1)
{
// Add the MenuItem to display for the PictureBox.
contextMenu1.MenuItems.Add(menuItem3);
}
}
[C++]
protected:
void MyPopupEventHandler(System::Object* /*sender*/, System::EventArgs* /*e*/)
{
// Define the MenuItem objects to display for the TextBox.
MenuItem* menuItem1 = new MenuItem(S"&Copy");
MenuItem* menuItem2 = new MenuItem(S"&Find and Replace");
// Define the MenuItem object to display for the PictureBox.
MenuItem* menuItem3 = new MenuItem(S"C&hange Picture");
// Clear all previously added MenuItems.
contextMenu1->MenuItems->Clear();
if(contextMenu1->SourceControl == textBox1)
{
// Add MenuItems to display for the TextBox.
contextMenu1->MenuItems->Add(menuItem1);
contextMenu1->MenuItems->Add(menuItem2);
}
else if(contextMenu1->SourceControl == pictureBox1)
{
// Add the MenuItem to display for the PictureBox.
contextMenu1->MenuItems->Add(menuItem3);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ContextMenu クラス | ContextMenu メンバ | System.Windows.Forms 名前空間