Winforms 正在传递checkedlistbox.checked项强制转换为列表<;内置分类>;从窗体实例到Revit类函数
从表单实例调用Revit类时,我没有遇到任何问题。当我尝试将列表指定给Revit类的函数categoryList()时,得到的变量在上下文错误中不存在。我尝试在form类“form UF=new form”的实例前面加上一个引用前缀;这不起作用Winforms 正在传递checkedlistbox.checked项强制转换为列表<;内置分类>;从窗体实例到Revit类函数,winforms,list,revit,Winforms,List,Revit,从表单实例调用Revit类时,我没有遇到任何问题。当我尝试将列表指定给Revit类的函数categoryList()时,得到的变量在上下文错误中不存在。我尝试在form类“form UF=new form”的实例前面加上一个引用前缀;这不起作用 //The Revit Class public Result Execute(ExternalCommandData commandData, ref string message,....) { User_F
//The Revit Class
public Result Execute(ExternalCommandData commandData, ref string message,....)
{
User_Form UF = new User_Form(commandData);
UF.ShowDialog();
public List<BuiltInCategory> categoryList(Document doc, int intSwitch)
{
//list built in categories for built in filter_1
builtInCats_List = new List<BuiltInCategory>();
switch (intSwitch)
{
case (1):
...
case (3):
...
case (4):
{
builtInCats_List = newStateCb1;
return builtInCats_List;
}
default:
{
builtInCats_List = newStateCb1;
return builtInCats_List;
}
}
}
using Form = System.Windows.Forms.Form;
using WS = ModelAuditor_2014.WorksetSorter_2014;
using ModelAuditor_2014;
using System.Threading;
//The Form
namespace ModelAuditor_2014
{
public partial class User_Form : Form
{
//Constructor
WorksetSorter_2014 WS = new WorksetSorter_2014();
//Revit references
public Autodesk.Revit.UI.UIApplication rvtUiApp;
public Autodesk.Revit.UI.UIDocument rvtUiDoc;
public Autodesk.Revit.ApplicationServices.Application rvtApp;
//Global Variables
public List<BuiltInCategory> Filter01_CategoryList;
public List<BuiltInCategory> Filter02_CategoryList;
public int intSwitch;
public List<BuiltInCategory> newStateCb1;
public User_Form(ExternalCommandData commandData)
{
//Revit references
rvtUiApp = commandData.Application;
rvtUiDoc = rvtUiApp.ActiveUIDocument;
rvtApp = rvtUiApp.Application;
InitializeComponent();
}
public void User_Form_Load(object sender, EventArgs e)
{
//use rvtDoc = Doc
Autodesk.Revit.DB.Document rvtDoc = .....
//CheckedListBox for filter01
checkedListBox1.DataSource = WS.categoryList(rvtDoc, intSwitch = 1);
Filter01_CategoryList = new List<BuiltInCategory>();
Filter01_CategoryList = WS.RetrieveSchema(rvtDoc, false);
foreach (BuiltInCategory ChkedB1 in Filter01_CategoryList)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.Items[i].ToString() == ChkedB1.ToString())
{
checkedListBox1.SetItemChecked(i, true);
}
}
}
public List<BuiltInCategory> returnNewStateCB1()
{
newStateCb1 = checkedListBox1.CheckedItems.Cast
<BuiltInCategory>().ToList<BuiltInCategory>();
return newStateCb1;
}
//Revit类
公共结果执行(外部命令数据、引用字符串消息等)
{
用户表单UF=新用户表单(commandData);
UF.ShowDialog();
公共列表类别列表(文档文档、int开关)
{
//列出内置过滤器_1的内置类别
内置列表=新列表();
开关(intSwitch)
{
案例(1):
...
案例(3):
...
案例(4):
{
内置属性列表=newStateCb1;
返回内置组件列表;
}
违约:
{
内置属性列表=newStateCb1;
返回内置组件列表;
}
}
}
使用Form=System.Windows.Forms.Form;
使用WS=ModelAuditor_2014.WorksetSorter_2014;
使用ModelAuditor\u 2014;
使用系统线程;
//形式
名称空间模型审核员2014
{
公共部分类用户表单:表单
{
//建造师
WorksetSorter_2014 WS=新的WorksetSorter_2014();
//Revit参考
公共Autodesk.Revit.UI.UI应用程序rvtUiApp;
公共Autodesk.Revit.UI.UIDocument rvtUiDoc;
公共Autodesk.Revit.ApplicationServices.Application rvtApp;
//全局变量
公共列表过滤器01_类别列表;
公共列表过滤器02_类别列表;
公共int交换机;
公共列表CB1;
公共用户表单(ExternalCommandData commandData)
{
//Revit参考
rvtUiApp=commandData.Application;
rvtUiDoc=rvtUiApp.ActiveUIDocument;
rvtApp=rvtUiApp.应用;
初始化组件();
}
公共无效用户\u表单\u加载(对象发送方,事件参数e)
{
//使用rvtDoc=Doc
Autodesk.Revit.DB.Document rvtDoc=。。。。。
//过滤器01的CheckedListBox
checkedListBox1.DataSource=WS.categoryList(rvtDoc,intSwitch=1);
Filter01_CategoryList=新列表();
Filter01_CategoryList=WS.RetrieveSchema(rvtDoc,false);
foreach(过滤器01_类别列表中的内置类别ChkedB1)
{
对于(int i=0;i
我将win表单中的列表传递给revit应用程序中的另一个公共函数,我可以访问此函数返回的列表