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;
}
我不知道OpenTK在其+运算符重载中是否设置了Vector属性。然而我们很容易找到。在执行调用代码时,在setter上设置一个断点,并查看调试是否在断点处停止。如果不是,那么您应该在调用代码的某个地方设置Vector属性,这样就会调用setter。
类似的东西
Vector3 lookAt = Center - Eye;
lookAt.Vector = Center - Eye;