根据配置文件生成<抽屉式工具栏控件>_初学者做
www.dimcax.com
根据配置文件生成<抽屉式工具栏控件>_初学者做
工具栏代码比较简单,界面引用developer express .net的xtranavbar生成根据自定义的mdb配置文件生成group及itemlink 反射没学会,暂时不会调用方法,希望高手指教! public partial class commandcontrol : devexpress.xtraeditors.xtrausercontrol { public commandcontrol(string configfile,string commandname) { initializecomponent(); initialize(configfile, commandname); } private static datatable items; //初始化工具栏 private void initialize(string configfile, string commandname) { oleadapter ole = new oleadapter(); datatable groups = ole.execuate(configfile,"select * from " + commandname + "_groups"); items = ole.execuate(configfile, "select * from " + commandname + "_items"); acadeditorclass ae = new acadeditorclass(); try { if (groups == null || items == null) return; string imagefile = ""; foreach (datarow row in groups.rows) { navbargroup navbargroup = null; navbargroup = navbarcontrol.groups.add(); navbargroup.name = (string)row["groupname"]; navbargroup.caption = (string)row["groupcaption"]; navbargroup.groupstyle = (navbargroupstyle)enum.parse (typeof(navbargroupstyle), row["groupstyle"].tostring()); navbargroup.expanded = (bool)row["expanded"]; imagefile = row["groupimage"].tostring(); if (imagefile != "" && ae.findfile(imagefile) != "") navbargroup.smallimage = image.fromfile(ae.findfile(imagefile)); string[] itemstring = row["items"].tostring().split('|'); foreach (string stritem in itemstring) { datarow[] rows = items.select("itemname = '" + stritem + "'"); if (rows != null) { navbaritem item = navbarcontrol.items.add(); item.name = (string)rows[0]["itemname"]; item.caption = (string)rows[0]["itemcaption"]; imagefile = rows[0]["image16"].tostring(); if(imagefile!=""&&ae.findfile(imagefile) !="") item.smallimage = image.fromfile(ae.findfile(imagefile)); imagefile = rows[0]["image32"].tostring(); if (imagefile != "" && ae.findfile(imagefile)!="") item.largeimage = image.fromfile(ae.findfile(imagefile)); navbargroup.itemlinks.add(item); navbarcontrol.activegroup = navbargroup; navbargroup.expanded = true; item.linkclicked += new devexpress.xtranavbar.navbarlinkeventhandler(navbaritem_linkclicked); } } } } catch { return; } finally { if (groups != null) groups.dispose(); if (items != null) items.dispose(); } } /// /// 执行鼠标点选的itemlink /// /// /// private void navbaritem_linkclicked(object sender, devexpress.xtranavbar.navbarlinkeventargs e) { string itemname = e.link.item.name; datarow[] rows = items.select("itemname = '" + itemname + "'"); if(rows!=null) { if ((bool)rows[0]["commandline"]) acadpropers.documentmanager.mdiactivedocument.sendstringtoexecute ((string)rows[0]["command"] + "\n", false, false, true); //(string)rows[0]["command"]为cad的命令或函数 else { //反射没学会,暂时不会调用方法,希望高手指教! } } } } [
(13.08 kb)
下载次数:1
下载次数:22
下载次数:19
["command"] + "\n", ture, false, true);
厉害
书山有路勤为径,学海无涯苦作舟!
反射请用type类别的invokemember方法~ 那个让lisp调用.net库就是用反射的方式通过字符调用的哈
谢谢,昨天请教了c#高手大概知道了反射的调用方法我想用c#直接调用反射
不好意思,拿了个办成品出来下面这段是调试的时候加上的忘了删了,调用后所有的group都会展开配置文件中的expand项会不起作用 navbarcontrol.activegroup = navbargroup; navbargroup.expanded = true;
小狼
我只找到了 v6.7,希望你能提供你所用的版本
1