Я новичок в WinForms и C # в целом, однако проблема, с которой я столкнулся, настолько проста, что даже удивляет меня.У меня есть небольшой UserControl, который содержит 3 текстовых поля, чтобы можно было отображать вектор в трехмерном пространстве.Элемент управления имеет свойство, которое позволяет потребителю устанавливать вектор, отображаемый элементом управления.
/// <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;
}