我想顯示一個小型智能感知窗口(這是一個小窗體),正好在文本的最後一個字符的下方,但與我目前的代碼的座標看起來是隨機的,不是很準確。任何幫助都會受到歡迎。在打字時顯示類似智能感知的窗口(無法獲得正確的座標)
當我按下Alt + 1(在打字時,我把這個代碼顯示intelliense樣窗口:
shortcuts.Location = GetPoint((TextBox)tabControl1.SelectedTab.Controls[0]);
shortcuts.Show(this);
和得到的座標男女同校是:
private Point GetPoint(TextBox textBoxControl)
{
Graphics graphics = Graphics.FromHwnd(textBoxControl.Handle);
SizeF size = graphics.MeasureString(textBoxControl.Text.Substring(0,
textBoxControl.SelectionStart), textBoxControl.Font);
Point coord = new Point((int)size.Width + textBoxControl.Location.X,
(int)size.Height + 200 + textBoxControl.Location.Y);
return coord;
}
工作代碼
我承認這樣做可能有更好的方法,但這對m E:
private Point GetPoint(TextBox textBoxControl)
{
Graphics graphics = Graphics.FromHwnd(textBoxControl.Handle);
SizeF size = graphics.MeasureString(textBoxControl.Text.Substring(0,
textBoxControl.SelectionStart), textBoxControl.Font);
Point coord = new Point(this.Left + (int)size.Width + textBoxControl.Location.X + 5,
this.Location.Y + 25 + toolStrip1.Height + tabControl1.Top + (int)size.Height + tabControl1.Top + textBoxControl.Location.Y + 25);
return coord;
}
然而,出於某種原因,在第一次調用此方法時,它始終只是出現在一些隨機的位置 - 儘管被放置在窗口此方法將導致每個後續調用,它應該;恰好在當前文本行的下方並水平對齊,以便窗口恰好位於文本框中的最後一個字符之後。
有多少差異?由一個字符關閉,或關閉一半的形式? – DonBoitnott
@DonBoitnott它大約有一半的表格寬度。 –
也許你應該使用textBoxControl.PointToScreen作爲偏移量。 – sprinter252