TextBox未在属性更改时更新

本文关键字:更新 属性 TextBox | 更新日期: 2023-09-27 18:27:37

我是WinForms和C#的新手,但我遇到的问题太基本了,甚至让我大吃一惊。我有一个小的UserControl,它包含3个文本框,可以显示三维空间中的矢量。控件具有允许使用者设置控件显示的Vector的属性。

    /// <summary>
    /// Read/Write property to set the displayed vector.
    /// </summary>
    public Vector3 Vector
    {
        get { return m_vector; }
        set
        {
            m_vector = value;
            string val = Convert.ToString(m_vector.X);
            txtX.Text = val;
            txtY.Text = Convert.ToString(m_vector.Y);
            txtZ.Text = Convert.ToString(m_vector.Z);
        }
    }

您会注意到,出于调试目的,我将转换与实际分配的文本属性分开。无论如何,val包含了它应该包含的内容。在调试器中检查txtX表明它设置正确。但是,该值永远不会在屏幕上更新。

除了设置位置、大小和名称之外,初始化TextBox的操作很少。这一切都是在Visual Studio设计器中完成的。有人能指出我可能做错了什么吗?

编辑:添加调用代码。

public override void LeftDrag(float deltaX, float deltaY)
    {
        float length = 2 * (Eye - Center).Length * (float)Math.Tan(FOVy / 2.0);
        Vector3 lookAt = Center - Eye;
        Vector3 dirY = Vector3.Cross(Up, lookAt);
        dirY.Normalize();
        Center += deltaY * length * Up;
        Center += deltaX * length * Width / Height * dirY;
    }

TextBox未在属性更改时更新

我不知道OpenTK在其+运算符重载中是否设置了Vector属性。然而我们很容易找到。在执行调用代码时,在setter上设置一个断点,并查看调试是否在断点处停止。如果不是,那么您应该在调用代码的某个地方设置Vector属性,这样就会调用setter。

类似的东西

Vector3 lookAt = Center - Eye;
lookAt.Vector = Center - Eye;