专业版的用户设计器功能中,怎么实现禁止用户删除模板上面的元素
在专业版中有个用户设计器的功能,我想利用这个功能给产品做一个可以让用户自己修改报表模板的功能,只希望用户调整模板上控件的位置,不希望他们删除模板上的控件。但是没找到怎样截获删除键(Del)的事件,想请教一下这个删除事件怎样截获 回复 1楼mimima2020的帖子
mimima2020 你好
不知道你使用的是ActiveReports哪个版本,在ActiveReports 9中提供了Designer.LayoutChanging 事件,你可以在这个事件中判断用户的操作类型:
private void ardMain_LayoutChanging(object sender, GrapeCity.ActiveReports.Design.LayoutChangingArgs e)
{
if (e.Type == Design.LayoutChangeType.SectionDelete)
{
DialogResult Result;
Result = MessageBox.Show("Are you sure you want to delete this section?", "Delete?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (Result == DialogResult.Cancel)
{
e.AllowChange = false;
}
else
{
e.AllowChange = true;
}
}
}
你好,我用的是ActiveReports 7,刚刚试了一下,直接加下面代码的话,
reportdesigner.LayoutChanging += (sender, args) { ..... }
在ardMain_LayoutChanging调用之后才被执行到,这时候删除确认的对话框已经弹出来了,
怎么样在执行ardMain_LayoutChanging之前就把Delete事件截取到,不让删除确认对话框弹出来啊
我试过reportdesigner.KeyDown,没有用,这个KeyDown事件没有传递到reportdesigner这一层
另外,还有个问题,右键菜单里面也可以删除,怎么样把右键菜单禁掉,不让右键菜单弹出来啊 回复 3楼mimima2020的帖子
如果是 7.0 请触发reportDesigner_LayoutChanging事件之前,设置以下代码:
reportDesigner.PromptUser = false;
非常感谢!!!
另外,还有个问题,右键菜单里面也可以删除,怎么样把右键菜单禁掉,不让右键菜单弹出来啊。 回复 5楼mimima2020的帖子
测试代码:
reportDesigner.ContextMenuOpen+=reportDesigner_ContextMenuOpen;
void reportDesigner_ContextMenuOpen(object sender, ContextMenuOpenArgs e)
{
e.Cancel = true;
} 非常感谢!
你们的支持太强大了! 回复 7楼mimima2020的帖子
客气了。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062 不好意思,再追加一个问题
在读入现有的模板文件后(可以是区域报表,也可以是页面报表)
怎么控制能做到只可以让用户修改Label的部分,不能修改TextBox的部分啊
(因为TextBox的修改和数据有关系,怕用户改坏了,所以需要设置一下不让他修改) 回复 9楼mimima2020的帖子
如果能够判断出当前控件的类型进而决定是否可修改动作,是否可以满足您需求?