2

我是 gis 的初学者,我必须制作一个简单的应用程序,其中包含 2 个按钮、一个文件夹浏览器和一个列表框。

但这是 arcmap 加载项中的内容,我需要处理多个文件,如 button.cs 等,但我不知道如何使文件相互交互。我一直在浏览许多论坛和 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

据我所知,您想用一些信息实例化一个 Button 对象(类),对吗?

有 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 回答