如果你想要的是光標寫在文本框中的最後一個字符後立即被定位,你可以依靠下面的代碼(由TextBox
的TextChanged 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
。下面這些行我適應的代碼,你可以找到在MSDN爲PropertyGrid
:txtBox
添加
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
)。
您需要在文本框中選擇文本? – terrybozzio