C#取得控制項絕對位置

我偶爾會寫些設備類用的程式。一般會捨棄掉鍵盤的使用,如果使用了觸摸式的螢幕,甚至會不用滑鼠。那麼輸入數字或是某些字就會用虛擬的鍵盤。那麼這虛擬的鍵盤跳出來的位置我設定的就要在要輸入的TextBox的右下角。如果太邊緣,可能要在左上、左下、右上角落。不管怎樣,都必須知道我的TextBox的絕對位置。因為我的虛擬鍵盤等於是開新的Frame。如何取得呢? 如下程式:



        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();
        }
  

這裡面的Point p會得到相反的負值。結果,如下圖:

留言

這個網誌中的熱門文章

C# 不規則陣列不定長度設定方法

多維陣列的Resize

C#利用DateTime估計程式執行時間