C#取得控制項絕對位置
我偶爾會寫些設備類用的程式。一般會捨棄掉鍵盤的使用,如果使用了觸摸式的螢幕,甚至會不用滑鼠。那麼輸入數字或是某些字就會用虛擬的鍵盤。那麼這虛擬的鍵盤跳出來的位置我設定的就要在要輸入的TextBox的右下角。如果太邊緣,可能要在左上、左下、右上角落。不管怎樣,都必須知道我的TextBox的絕對位置。因為我的虛擬鍵盤等於是開新的Frame。如何取得呢? 如下程式:
這裡面的Point p會得到相反的負值。結果,如下圖:
private void txtExp_Click(object sender, EventArgs e)
{
Point p = ((TextBox)sender).PointToClient(new Point(0, 0));
KeyPad kp = new KeyPad(false, true);
kp.Left = -p.X + ((TextBox)sender).Width;
kp.Top = -p.Y + ((TextBox)sender).Height;
kp.ShowDialog();
if (!kp.cancel)
((TextBox)sender).Text = kp.numResult.ToString();
}
留言