TextBox不会更新属性更改

时间:2012-03-13 22:17:09

标签: c# .net winforms

我一般都是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);
        }
    }

您会注意到我从实际分配text属性中拆分了转换以进行调试。在任何情况下,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;
    }

1 个答案:

答案 0 :(得分:0)

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

这样的东西
Vector3 lookAt = Center - Eye;
lookAt.Vector = Center - Eye;
相关问题