110,499
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 初始化模块工具栏
/// </summary>
protected void InitToolBar()
{
using (var cli = new CommonsClient(MainForm.Binding, MainForm.Address))
{
_Actions = cli.GetAction(UserSession, ModuleId);
}
barMainToolBar.BarName = ModuleId.ToString();
foreach (DataRow row in _Actions.Rows)
{
var item = new BarButtonItem(barManager, row["Alias"].ToString())
{
CategoryGuid = (Guid) row["ModuleId"],
Tag = row["Enable"],
Name = row["Name"].ToString(),
Glyph = Image.FromStream(new MemoryStream((byte[]) row["Icon"])),
PaintStyle = (bool) row["ShowText"] ? BarItemPaintStyle.CaptionGlyph : BarItemPaintStyle.Standard,
Enabled = (bool) row["Enable"],
Visibility = (bool) row["Validity"] ? BarItemVisibility.Always : BarItemVisibility.Never
};
item.ItemClick += item_ItemClick;
barManager.Items.Add(item);
barManager.Bars[ModuleId.ToString()].ItemLinks.Add(item, (bool)row["BeginGroup"]);
}
}
按钮是根据数据动态加入的,而不是事先拖上去。这样控制权限就很简单了。[/quote]
动态添加菜单这个我也有用到 动态隐藏窗口中按钮我也有用到(我的权限是精确到按钮的,而不仅仅是菜单) /// <summary>
/// 初始化模块工具栏
/// </summary>
protected void InitToolBar()
{
using (var cli = new CommonsClient(MainForm.Binding, MainForm.Address))
{
_Actions = cli.GetAction(UserSession, ModuleId);
}
barMainToolBar.BarName = ModuleId.ToString();
foreach (DataRow row in _Actions.Rows)
{
var item = new BarButtonItem(barManager, row["Alias"].ToString())
{
CategoryGuid = (Guid) row["ModuleId"],
Tag = row["Enable"],
Name = row["Name"].ToString(),
Glyph = Image.FromStream(new MemoryStream((byte[]) row["Icon"])),
PaintStyle = (bool) row["ShowText"] ? BarItemPaintStyle.CaptionGlyph : BarItemPaintStyle.Standard,
Enabled = (bool) row["Enable"],
Visibility = (bool) row["Validity"] ? BarItemVisibility.Always : BarItemVisibility.Never
};
item.ItemClick += item_ItemClick;
barManager.Items.Add(item);
barManager.Bars[ModuleId.ToString()].ItemLinks.Add(item, (bool)row["BeginGroup"]);
}
}
按钮是根据数据动态加入的,而不是事先拖上去。这样控制权限就很简单了。
Assembly asb = Assembly.Load("XXX");
Type[] types = asb.GetExportedTypes();
foreach (Type type in types)
{
if (!new[] { "System.Windows.Forms.Form", "DevExpress.XtraEditors.XtraForm" }.Contains(type.BaseType.FullName) || type.ContainsGenericParameters) continue;
Form frm = asb.CreateInstance(type.FullName) as Form;
List<string> btnList = new List<string>();
GetbtnList(frm, frm.Controls,btnList);
}
public void GetbtnList(object obj, Control.ControlCollection ctc,List<string> rst)
{
foreach (Control con in ctc)
{
if (!con.HasChildren)
{
Control c1 = con as DevExpress.XtraEditors.SimpleButton;
if (c1 != null)
rst.Add(c1.Text);
if (con.GetType().ToString() == "DevExpress.XtraBars.BarManager")
{
string xx = "";//////////////////////////////////////////////////////永远都不会执行这段话!
}
}
else
GetbtnList(obj, con.Controls,rst);
}
}