私は一般的にWinFormsとC#の新機能ですが、私が持っている問題はそれほど基本的なものでもあります。私が持っているのは、3次元空間のベクトルを表示できるように3つのテキストボックスを含む小さなUserControlです。コントロールには、コンシューマがコントロールによって表示されるベクターを設定できるプロパティがあります。TextBoxがプロパティの変更で更新されない
/// <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デザイナーで行われました。誰かが私が間違っているかもしれないことを指摘できますか?
EDIT:呼び出しコードを追加する。
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;
}
よう
何か間違っているものは何もありません。テキストボックスが他の場所で更新されていないことを確かめますか? – Steve
いいえ、Textプロパティを更新する唯一の方法は、私が示したこのプロパティです。私はちょうどブレークポイントを設定して、悪い入力が行われていないことを確認しました。それはそうではないようです。 – ctartamella
おそらく呼び出し元コードの何かが更新を妨げます。呼び出しメソッドを表示できますか? – Steve