2012-03-13 16 views
0

私は一般的に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; 
    } 
+0

よう

何か間違っているものは何もありません。テキストボックスが他の場所で更新されていないことを確かめますか? – Steve

+0

いいえ、Textプロパティを更新する唯一の方法は、私が示したこのプロパティです。私はちょうどブレークポイントを設定して、悪い入力が行われていないことを確認しました。それはそうではないようです。 – ctartamella

+0

おそらく呼び出し元コードの何かが更新を妨げます。呼び出しメソッドを表示できますか? – Steve

答えて

0

OpenTKの+演算子オーバーロードでVectorプロパティが設定されているかどうかわかりません。しかし、簡単に見つけることができました。呼び出しコードを実行している間に、セッターでブレークポイントを設定し、ブレークポイントでデバッグが停止するかどうかを確認します。そうでない場合は、呼び出しコードのどこかでVectorプロパティを設定して、setterが呼び出されるようにする必要があります。あなたのコードから

Vector3 lookAt = Center - Eye; 
lookAt.Vector = Center - Eye; 
関連する問題