次の方法で共有


RichTextBox.GetPositionFromCharIndex メソッド

指定した文字インデックスが示す、コントロール内の位置を取得します。

Public Function GetPositionFromCharIndex( _
   ByVal index As Integer _) As Point
[C#]
public Point GetPositionFromCharIndex(intindex);
[C++]
public: Point GetPositionFromCharIndex(intindex);
[JScript]
public function GetPositionFromCharIndex(
   index : int) : Point;

パラメータ

  • index
    位置の取得対象とする文字のインデックス。

戻り値

指定した文字の位置。

解説

このメソッドを使用すると、特定の文字インデックスが示す、コントロール内の位置を確認できます。このメソッドは、コントロール内の単語についてショートカット メニュー項目やヘルプ情報を表示するなどのタスクを実行する場合に使用できます。たとえば、ユーザーがコントロール内の単語を右クリックするとオプション メニューが表示されるようにする場合、このメソッドを使用して単語の位置を確認し、 ContextMenu コントロールを適切に表示できます。

使用例

GetPositionFromCharIndex メソッドの使用方法を示すコード例を次に示します。この例を実行するには、次のコードをフォームに貼り付けます。そして、フォームのコンストラクタまたは Load メソッドから InitializeRichTextBox メソッドを呼び出します。

[SampleID='System.Windows.Forms.RichTextBoxGetPosition' SnippetID='1']
--------- Languages displayed= cs, vb ---------
--------- cs ---------
--------- Snippet 1 ---------
        private void InitializeRichTextBox()
        {
            // Set textbox's text property.
            this.richTextBox1.Text = "Order Number: 12345\nCustomer Number: " 
                + "4567\n\tItem Number: 12984\n\tQuantity: 1\n\tUnit " 
                + "Price: 1.29\nTotal Price: 1.29\nShipping method: " 
                + "UPS Ground\nTotal Invoice: 4.29";
            // Associate the event-handling method with the
            // MouseDown event.
            this.richTextBox1.MouseDown += 
                new MouseEventHandler(richTextBox1_MouseDown);
        }
        private void richTextBox1_MouseDown(
            object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Int32 searchIndex = -1;
            // Determine whether the button pressed was the right 
            // mouse button.
            if (e.Button == MouseButtons.Right)
            {
                // Get the index of the item number.
                searchIndex = richTextBox1.Text.IndexOf("Item Number:");
                
                if (searchIndex != -1) 
                {
                    // Use the index to retrieve the point at which the 
                    // item number is located. 
                    Point menuPoint = 
                        richTextBox1.GetPositionFromCharIndex(searchIndex);
                    // Add five to both coordinates of the point.
                    menuPoint.X += 5;
                    menuPoint.Y += 5;
                    // Create the context menu.
                    MenuItem[] items = 
                        new MenuItem[]{new MenuItem("Show Item Description"),
                            new MenuItem("Go to Item Number List")};
                                                                                        
                    ContextMenu menu = new ContextMenu(items);
                    // Show the menu at the point found above.
                    menu.Show(this.richTextBox1, menuPoint);
                }
            }
        }
--------- vb ---------
--------- Snippet 1 ---------
    Private Sub InitializeRichTextBox()
        ' Set textbox's text property.
        Me.richTextBox1.Text = "Order Number: 12345" & vbLf _
        & "Customer Number: " & "4567" & vbLf & vbTab _
        & "Item Number: 12984" & vbLf & vbTab & "Quantity: 1" _
        & vbLf & vbTab & "Unit " & "Price: 1.29" & vbLf _
        & "Total Price: 1.29" & vbLf & "Shipping method: " _
        & "UPS Ground" & vbLf & "Total Invoice: 4.29"
    End Sub
    Private Sub richTextBox1_MouseDown(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles richTextBox1.MouseDown
        Dim searchIndex As Int32 = -1
        ' Determine whether the button pressed was the right 
        ' mouse button.
        If e.Button = MouseButtons.Right Then
            ' Get the index of the item number.
            searchIndex = richTextBox1.Text.IndexOf("Item Number:")
            If searchIndex <> -1 Then
                ' Use the index to retrieve the point at which the 
                ' item number is located. 
                Dim menuPoint As Point = _
                richTextBox1.GetPositionFromCharIndex(searchIndex)
                ' Add five to both coordinates of the point.
                menuPoint.X += 5
                menuPoint.Y += 5
                ' Create the context menu.
                Dim items() As MenuItem = _
                    {New MenuItem("Show Item Description"), _
                    New MenuItem("Go to Item Number List")}
                Dim menu As New ContextMenu(items)
                ' Show the menu at the point found above.
                menu.Show(Me.richTextBox1, menuPoint)
            End If
        End If
    End Sub
   End Class

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

RichTextBox クラス | RichTextBox メンバ | System.Windows.Forms 名前空間 | GetCharFromPosition | GetCharIndexFromPosition | GetLineFromCharIndex