TreeView.GetNodeAt メソッド (Int32, Int32)
指定した座標位置にあるツリー ノードを取得します。
Overloads Public Function GetNodeAt( _
ByVal x As Integer, _ ByVal y As Integer _) As TreeNode
[C#]
public TreeNode GetNodeAt(intx,inty);
[C++]
public: TreeNode* GetNodeAt(intx,inty);
[JScript]
public function GetNodeAt(
x : int,y : int) : TreeNode;
パラメータ
戻り値
ツリー ビュー内の指定した座標位置にある TreeNode 。
解説
x パラメータと y パラメータとして、 MouseDown イベントの MouseEventArgs.X 座標と MouseEventArgs.Y 座標を渡すことができます。
使用例
[Visual Basic, C#, C++] ContextMenu を使用して、ユーザーがルート以外のツリー ノードを編集できるようにする例を次に示します。ユーザーがマウスを右クリックすると、ポインタ位置にある TreeNode が判断され、 mySelectedNode
という名前の変数に格納されます。ルート以外のツリー ノードが選択された場合、そのツリー ノードはユーザーが編集できる状態になります。ユーザーがツリー ノードのラベル編集を停止すると、新しいラベル テキストが評価され、保存されます。この例では、いくつかの文字がラベル テキストとして無効であると判断されます。ラベル文字列に無効な文字が 1 文字でも含まれている場合、または文字列が空の場合は、ユーザーにエラーが通知され、ラベル テキストは前の状態に戻されます。
' Get the tree node under the mouse pointer and
' save it in the mySelectedNode variable.
Private Sub treeView1_MouseDown(sender As Object, _
e As System.Windows.Forms.MouseEventArgs)
mySelectedNode = treeView1.GetNodeAt(e.X, e.Y)
End Sub
Private Sub menuItem1_Click(sender As Object, e As System.EventArgs)
If Not (mySelectedNode Is Nothing) And _
Not (mySelectedNode.Parent Is Nothing) Then
treeView1.SelectedNode = mySelectedNode
treeView1.LabelEdit = True
If Not mySelectedNode.IsEditing Then
mySelectedNode.BeginEdit()
End If
Else
MessageBox.Show("No tree node selected or selected node is a root node." & _
Microsoft.VisualBasic.ControlChars.Cr & _
"Editing of root nodes is not allowed.", "Invalid selection")
End If
End Sub
Private Sub treeView1_AfterLabelEdit(sender As Object, _
e As System.Windows.Forms.NodeLabelEditEventArgs)
If Not (e.Label Is Nothing) Then
If e.Label.Length > 0 Then
If e.Label.IndexOfAny(New Char() {"@"c, "."c, ","c, "!"c}) = -1 Then
' Stop editing without canceling the label change.
e.Node.EndEdit(False)
Else
' Cancel the label edit action, inform the user, and
' place the node in edit mode again.
e.CancelEdit = True
MessageBox.Show("Invalid tree node label." & _
Microsoft.VisualBasic.ControlChars.Cr & _
"The invalid characters are: '@','.', ',', '!'", _
"Node Label Edit")
e.Node.BeginEdit()
End If
Else
' Cancel the label edit action, inform the user, and
' place the node in edit mode again.
e.CancelEdit = True
MessageBox.Show("Invalid tree node label." & _
Microsoft.VisualBasic.ControlChars.Cr & _
"The label cannot be blank", "Node Label Edit")
e.Node.BeginEdit()
End If
Me.treeView1.LabelEdit = False
End If
End Sub
[C#]
/* Get the tree node under the mouse pointer and
save it in the mySelectedNode variable. */
private void treeView1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
mySelectedNode = treeView1.GetNodeAt(e.X, e.Y);
}
private void menuItem1_Click(object sender, System.EventArgs e)
{
if (mySelectedNode != null && mySelectedNode.Parent != null)
{
treeView1.SelectedNode = mySelectedNode;
treeView1.LabelEdit = true;
if(!mySelectedNode.IsEditing)
{
mySelectedNode.BeginEdit();
}
}
else
{
MessageBox.Show("No tree node selected or selected node is a root node.\n" +
"Editing of root nodes is not allowed.", "Invalid selection");
}
}
private void treeView1_AfterLabelEdit(object sender,
System.Windows.Forms.NodeLabelEditEventArgs e)
{
if (e.Label != null)
{
if(e.Label.Length > 0)
{
if (e.Label.IndexOfAny(new char[]{'@', '.', ',', '!'}) == -1)
{
// Stop editing without canceling the label change.
e.Node.EndEdit(false);
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\n" +
"The invalid characters are: '@','.', ',', '!'",
"Node Label Edit");
e.Node.BeginEdit();
}
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\nThe label cannot be blank",
"Node Label Edit");
e.Node.BeginEdit();
}
this.treeView1.LabelEdit = false;
}
}
[C++]
/* Get the tree node under the mouse pointer and
save it in the mySelectedNode variable. */
private:
void treeView1_MouseDown(Object* /*sender*/,
System::Windows::Forms::MouseEventArgs* e)
{
mySelectedNode = treeView1->GetNodeAt(e->X, e->Y);
}
void menuItem1_Click(Object* /*sender*/, System::EventArgs* /*e*/)
{
if (mySelectedNode != 0 && mySelectedNode->Parent != 0)
{
treeView1->SelectedNode = mySelectedNode;
treeView1->LabelEdit = true;
if(!mySelectedNode->IsEditing)
{
mySelectedNode->BeginEdit();
}
}
else
{
MessageBox::Show(S"No tree node selected or selected node is a root node.\nEditing of root nodes is not allowed.", S"Invalid selection");
}
}
void treeView1_AfterLabelEdit(Object* /*sender*/,
System::Windows::Forms::NodeLabelEditEventArgs* e)
{
if (e->Label != 0)
{
if(e->Label->Length > 0)
{
Char temp0 [] = {'@', '.', ',', '!'};
if (e->Label->IndexOfAny(temp0) == -1)
{
// Stop editing without canceling the label change.
e->Node->EndEdit(false);
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e->CancelEdit = true;
MessageBox::Show(S"Invalid tree node label.\nThe invalid characters are: '@','.', ',', '!'",
S"Node Label Edit");
e->Node->BeginEdit();
}
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e->CancelEdit = true;
MessageBox::Show(S"Invalid tree node label.\nThe label cannot be blank",
S"Node Label Edit");
e->Node->BeginEdit();
}
this->treeView1->LabelEdit = false;
}
}
[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 ファミリ
参照
TreeView クラス | TreeView メンバ | System.Windows.Forms 名前空間 | TreeView.GetNodeAt オーバーロードの一覧 | Point