1

このメソッドを呼び出すときに、textBox 要素の現在の位置を取得するにはどうすればよいですか?

 private void UserTextBox_GotFocus(object sender, RoutedEventArgs e)
        {

        }

アップデート

 GeneralTransform gt = this.TransformToVisual(Application.Current.RootVisual as UIElement);
            Point offset = gt.Transform(new Point(0, 0));
            double controlTop = offset.Y;
            double controlLeft = offset.X;

このcontrolTopとcontrolLeftを使用すると(0,0)

4

3 に答える 3

1

このように TextBox の参照を取得します。「this」は使用しないでください。この場合の「これ」は、まったく別のオブジェクトです。

    private void txt1_GotFocus(object sender, RoutedEventArgs e)
    {
        TextBox t = sender as TextBox;
        GeneralTransform gt ...
    }
于 2012-04-06T12:11:24.430 に答える
1

更新の「これ」はページオブジェクトであるためです。xaml でテキスト ボックスに x:Name="MyTextbox" という名前を付けます。次に、フォーカス イベント ハンドラーで次のようにします。

private void UserTextBox_GotFocus(object sender, RoutedEventArgs e)
{
    GeneralTransform gt = MyTextbox.TransformToVisual(Application.Current.RootVisual);
    Point offset = gt.Transform(new Point(0, 0));
    double controlTop = offset.Y;
    double controlLeft = offset.X;
}

コードでは、アプリケーションに従ってページの絶対位置を取得しようとしているため、オフセット値が 0 になっています。

于 2012-04-06T11:57:26.807 に答える