shasha007 发表于 2011-7-5 12:21:26

怎么让属性显示在文本框中

我创建了一个块,这里代码就不写了,然后我想用下面这个方法实现点击块,然后该块的属性名和属性值都出现在windows窗体的文本框中,可是块得属性我获取出来了,但不知道怎么让它显示在文本框中,在代码中应该怎么写啊,请指点

      public static void BrowseBlock()
      {
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
         Database db = HostApplicationServices.WorkingDatabase;
         TypedValue[] filterValues = { new TypedValue((int)DxfCode.Start, "INSERT")};
         SelectionFilter filter = new SelectionFilter(filterValues);
         PromptSelectionOptions opts = new PromptSelectionOptions();
         opts.MessageForAdding = "请选择图形中的块对象";
         PromptSelectionResult res = ed.GetSelection(opts, filter);
         if (res.Status != PromptStatus.OK)
         {
               return;
         }
         SelectionSet ss = res.Value;
         ObjectId[] ids = ss.GetObjectIds();
         Transaction trans = db.TransactionManager.StartTransaction();
         foreach (ObjectId blockid in ids)
         {
               BlockReference blockref = (BlockReference)trans.GetObject(blockid, OpenMode.ForRead);
               BlockTableRecord btr = (BlockTableRecord)trans.GetObject(blockref.BlockTableRecord, OpenMode.ForRead);
            btr.Name   //属性名
               btr.Dispose();
               AttributeCollection atts = blockref.AttributeCollection;
               foreach (ObjectId attid in atts)
               {
                   AttributeReference attref = (AttributeReference)trans.GetObject(attid, OpenMode.ForRead);
                   attref.TextString       //属性值
               }
               
         }
      }

lzx838 发表于 2011-7-16 15:53:27

把方法
public static void BrowseBlock()
改成带参数的方法
public static void BrowseBlock(TextBox txtName,TextBox txtValue)

其中txtName为属性名文本框,txtValue为属性值文本框

然后进行赋值:
txtName.Text=btr.Name   //属性名
txtValue.Text=attref.TextString       //属性值

李辉 发表于 2011-9-23 15:42:52

lzx838 发表于 2011-7-16 15:53 static/image/common/back.gif
把方法
public static void BrowseBlock()
改成带参数的方法


我也遇到类似问题,用命令,无法向palette的textbox传递属性啊,如果上面改成带参数的,那么命令无法调用啊

李辉 发表于 2011-9-23 20:15:54

本帖最后由 李辉 于 2011-9-23 20:18 编辑

下午我的问题,跟你一样的,搞定啦!!解决方法是这样的:通过命令的方式向文本框赋予text属性,这个文本框必须是public shared的属性,共享的变量,然后才能在通过命令外部调用
页: [1]
查看完整版本: 怎么让属性显示在文本框中