2

私はGISの初心者で、フォルダブラウザとリストボックスの2つのボタンを備えた簡単なアプリケーションを作成する必要があります.

しかし、これはボタン.csなどの複数のファイルを操作する必要があるarcmapアドインのものですが、ファイルを相互にやり取りさせる方法がわかりません。私は多くのフォーラムと arcgis リソース センターを調べてきました。しかし、私は何も見つけられないようです。

だから私がやりたいのは、イベント/変数を他のファイルに渡すことができるようにすることです。反対票を投じたいという衝動を感じる前に、私が間違っていることを明確にしてください(何が問題なのかわからない場合、より良い質問を投稿することを学びません)、助けてくれてありがとう.

ここにいくつかのコードがあります

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.ArcMapUI;

namespace ArcMapAddin16
{
public class Button1 : ESRI.ArcGIS.Desktop.AddIns.Button
{
    public Button1()
    {
    }

    protected override void OnClick()
    {
        UID dockWinID = new UIDClass();
        dockWinID.Value = ThisAddIn.IDs.DockableWindow1;
        IDockableWindow dockWindow =      ArcMap.DockableWindowManager.GetDockableWindow(dockWinID);
        dockWindow.Show(true);

        listBox1.Items.Add("Sally");
        listBox1.Items.Add("Craig");

        ArcMap.Application.CurrentTool = null;
    }
    protected override void OnUpdate()
    {
        Enabled = ArcMap.Application != null;
    }
}

}
4

2 に答える 2

0

私が理解できることから、ボタン オブジェクト (クラス) をいくつかの情報でインスタンス化する必要がありますね。

2 つのオプションがあります。1 つ目は、パラメーターを挿入できるコンストラクターを定義することです。2 つ目は、オブジェクトを作成してから、必要な情報でプロパティを設定することです。

これはコードでどのように見えるかです。

public class Person
{
 // default constructor
 public Person()
 {
 }

 public Person(string name, int age)
 {
  Name = name;
  Age = age;
 }

 public string Name {get;set;}
 public int Age {get;set;}
}

public class Employee
{
 private Person _person;

 // default constructor
 // Option 1;
 public Employee()
 {
  // create instance of person injecting name and age on instantiation
  Person = new Person("John Doe", "42");
 }

 // Option 2
 public Employee(string name, int age)
 {
  // create instance with default constructor 
  Person = new Person();

  // set properties once object is created.
  Person.Name = name;
  Person.Age = age;
 }

}

あなたのプログラミング スキルはわかりませんが、C# を初めて使用する場合は、このリンクをチェックしてください。

これが役立つことを願っています。

于 2013-11-25T18:47:27.170 に答える
0

アドインの他のコンポーネントからアクセスできる拡張機能を実装する必要があります。カスタム選択拡張機能のサンプルは、コンポーネント間でこのような通信を実装する方法を示しています。

于 2013-11-25T18:52:35.563 に答える