2013-07-19 43 views
0

如何從指定的字段獲取PropertyGrid的TextBox? 我需要這個文本框來設置指針到文本的末尾。Get PropertyGrid TextBox

var num = txtBox.GetCharIndexFromPosition(Cursor.Position); 
txtBox.SelectionStart = num + 1; 
txtBox.SelectionLength = 0; 

那麼如何從PropertyGrid中獲取這個TextBox? 另外,PropertyGrid中的屬性是隻讀的。

+0

您需要在文本框中選擇文本? – terrybozzio

回答

1

如果你想要的是光標寫在文本框中的最後一個字符後立即被定位,你可以依靠下面的代碼(由TextBoxTextChanged Event觸發):

private void txtBox_TextChanged(object sender, EventArgs e) 
{ 
    int newX = txtBox.Location.X + TextRenderer.MeasureText(txtBox.Text, txtBox.Font).Width; 
    int newY = txtBox.Bottom - txtBox.Height/2; 
    if (newX > txtBox.Location.X + txtBox.Width) 
    { 
     newX = txtBox.Location.X + txtBox.Width; 
    } 
    Cursor.Position = this.PointToScreen(new Point(newX, newY)); 
} 

熊記住它的Y位置總是在中間。 THE金王COMMENT

-----更新後

至於在問題的代碼被提到了TextBox,我專注於TextBox我的答案。儘管如此,KingKing是正確的,必須考慮到PropertyGrid。下面這些行我適應的代碼,你可以找到在MSDNPropertyGridtxtBox添加

private void Form1_Load(object sender, EventArgs e) 
{ 
    PropertyGrid propertyGrid1 = new PropertyGrid(); 
    propertyGrid1.CommandsVisibleIfAvailable = true; 
    propertyGrid1.Location = new Point(10, 20); 
    propertyGrid1.Size = new System.Drawing.Size(400, 300); 
    propertyGrid1.TabIndex = 1; 
    propertyGrid1.Text = "Property Grid"; 

    this.Controls.Add(propertyGrid1); 

    propertyGrid1.SelectedObject = txtBox; 
} 

propertyGrid1,其位置被更新,因此可以毫無問題地使用原來的代碼。

總之,思想並不尋找PropertyGrid內的TextBox,而是直接訪問TextBox控制(這是在運行時添加到PropertyGrid)。

+0

'OP'如何訪問'txtBox'?他希望訪問與「PropertyGrid」中的字段相對應的特定文本框。 –

+0

@KingKing我已經更新了我的答案。 – varocarbas