这是一个比较简单的基于AutoCAD的二次开发程序。
VS 2010 + AutoCAD2012,其实用到的CAD的东西不多。
程序本身比较简单,调试的时候遇到了一个麻烦问题。
更换了两台电脑都一直出现“无可用源”,也不知道怎么回事。
我把代码贴出一部分来,向大神们求助。//这个是二次开发命令的入口,运行是正常的
 [CommandMethod("getcomp")]
        public void getcomp()
        {
            int i = 0;
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            Database db = HostApplicationServices.WorkingDatabase;            //中间代码省略……             //MagicBuilding.frmButtonTest ext = new frmButtonTest(compList);
             Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(ext);
            }
//下面是被调用的窗口,也是非常简单
public partial class frmButtonTest: Form
    {
        IList<component> comps;
        IList<comppara> cparaList;
        AccessDbClass accdb;
        public string cType;
        public bool bPara;
        public frmStructure(IList<component> compList)
        {
            //构造函数就是获取上面的几个参数信息
        }
//下面就是一个简单的Button测试
//第一次调试的时候是正常的,第二次及其以后加断电调试就不行
//一直出现“无可用源”
 private void button1_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 0)
            {
                MessageBox.Show("没有选中行!");
                return;
            }
            MessageBox.Show("选中!");
        }
//下面的图是我调试的时候的截图
//我尝试把多余的代码都去掉,也无法去除这个问题
就这样一个简单问题,困扰了我好几天了
求大神们帮助,感激不尽!!

解决方案 »

  1.   

    搞定了,原来是Show和Showdialog弄错了
      

  2.   

    我也是开发cad的时候出现一样的问题,能否指教下? [CommandMethod("Test")]
            public void Test()
            {
                MainForm form = new MainForm();
                
                Application.ShowModalDialog(form);
            }//下面是form类
    public MainForm()
            {
                InitializeComponent();
            }                private void MainForm_Load(object sender, EventArgs e)
            {
                string a = "11";
                string b = "22";
                string c = a + b;
            }        private void button_ok_Click(object sender, EventArgs e)
            {
                string a = "11";
                string b = "22";
                string c = a + b;
            }