0

私は現在、キャンバスを使用して写真の特定の場所の周りに長方形を描く (場所をマークする) 必要があるプロジェクトに取り組んでいます。

各長方形 (実際には「長方形」です。これは、Gridクラスから継承して作成し、長方形オブジェクトを含むカスタム クラスでもあるためです) には、画像内のマークされた場所に関するプロパティとデータが含まれています。TextBox私のメインフォームには、DropDownListsなどのコントロールが含まれています。

今私がやろうとしているのは、「長方形」オブジェクトをクリックするたびに、メインフォームコントロールがオブジェクトデータで満たされることです。キャンバス クラスからこれらのコントロールにアクセスできません。

このコードは、オブジェクトをキャンバスに追加するためのコスチューム キャンバス クラス内にあります。

protected override void OnMouseLeftButtonDown( MouseButtonEventArgs e)
 {
   if(e.ClickCount==2)
    {
      testTi = new TiTest();
      base.OnMouseLeftButtonDown(e);
      startPoint = e.GetPosition(this);
      testTi.MouseLeftButtonDown += testTi_MouseLeftButtonDown;
      Canvas.SetLeft(testTi, e.GetPosition(this).X);
      Canvas.SetTop(testTi, e.GetPosition(this).X);
      this.Children.Add(testTi);
   }
}

キャンバス内に配置されたオブジェクトをクリックして、情報を取得したいと考えています。今のところ、単純なメッセージボックスで正しいオブジェクトを取得していることを確認したいだけです

void testTi_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  {
    MessageBox.Show(sender.GetType().ToString());         
  }

これは私の衣装「長方形」クラスです

class TiTest:Grid
{

    private Label tiNameLabel;
    private Rectangle tiRectangle;
    private String SomeText = string.Empty;
    private String version = "1.0";
    private String application = "CRM";
    private String CRID = "NNN";

    public String SomeText1
    {
        get { return SomeText; }
        set { SomeText = value; }
    }

    public Rectangle TiRectangle
    {
        get { return tiRectangle; }
        set { tiRectangle = value; }
    }
    public Label TiNameLabel
    {
        get { return tiNameLabel; }
        set { tiNameLabel = value; }
    }

    public TiTest()
    {
        this.SomeText = "Hello World!!";
        this.TiNameLabel = new Label
            {
                Content = "Test Item",
                VerticalAlignment = System.Windows.VerticalAlignment.Top,
                HorizontalAlignment = System.Windows.HorizontalAlignment.Left
            };
        TiRectangle = new Rectangle
          {
              Stroke = Brushes.Red,
              StrokeDashArray = new DoubleCollection() { 3 },//Brushes.LightBlue,
              StrokeThickness = 2,
              Cursor = Cursors.Hand,
              Fill = new SolidColorBrush(Color.FromArgb(0, 0, 111, 0))
          };
        Background= Brushes.Aqua;
        Opacity = 0.5;
        this.Children.Add(this.tiNameLabel);
        this.Children.Add(this.tiRectangle);


    }

}

コスチューム キャンバス クラスまたはコスチューム レクタングル クラスからメイン フォーム コントロールにアクセスする方法はありますか?

前もって感謝します

4

1 に答える 1