mimima2020 发表于 2014-12-5 14:12:00

专业版的用户设计器功能中,怎么实现禁止用户删除模板上面的元素

在专业版中有个用户设计器的功能,我想利用这个功能给产品做一个可以让用户自己修改报表模板的功能,只希望用户调整模板上控件的位置,不希望他们删除模板上的控件。
但是没找到怎样截获删除键(Del)的事件,想请教一下这个删除事件怎样截获

ZenosZeng 发表于 2014-12-5 16:23:00

回复 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;
      }
    }
}

mimima2020 发表于 2014-12-5 17:08:00

你好,我用的是ActiveReports 7,刚刚试了一下,直接加下面代码的话,
reportdesigner.LayoutChanging += (sender, args) { ..... }
在ardMain_LayoutChanging调用之后才被执行到,这时候删除确认的对话框已经弹出来了,
怎么样在执行ardMain_LayoutChanging之前就把Delete事件截取到,不让删除确认对话框弹出来啊

我试过reportdesigner.KeyDown,没有用,这个KeyDown事件没有传递到reportdesigner这一层

另外,还有个问题,右键菜单里面也可以删除,怎么样把右键菜单禁掉,不让右键菜单弹出来啊

iceman 发表于 2014-12-8 18:04:00

回复 3楼mimima2020的帖子

如果是 7.0 请触发reportDesigner_LayoutChanging事件之前,设置以下代码:

            reportDesigner.PromptUser = false;

mimima2020 发表于 2014-12-9 14:38:00

非常感谢!!!
另外,还有个问题,右键菜单里面也可以删除,怎么样把右键菜单禁掉,不让右键菜单弹出来啊。

iceman 发表于 2014-12-9 16:57:00

回复 5楼mimima2020的帖子

测试代码:
         reportDesigner.ContextMenuOpen+=reportDesigner_ContextMenuOpen;
      void reportDesigner_ContextMenuOpen(object sender, ContextMenuOpenArgs e)
      {
            e.Cancel = true;
      }

mimima2020 发表于 2014-12-9 17:50:00

非常感谢!
你们的支持太强大了!

iceman 发表于 2014-12-9 18:32:00

回复 7楼mimima2020的帖子

客气了。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

mimima2020 发表于 2014-12-15 10:27:00

不好意思,再追加一个问题
在读入现有的模板文件后(可以是区域报表,也可以是页面报表)
怎么控制能做到只可以让用户修改Label的部分,不能修改TextBox的部分啊
(因为TextBox的修改和数据有关系,怕用户改坏了,所以需要设置一下不让他修改)

iceman 发表于 2014-12-15 15:01:00

回复 9楼mimima2020的帖子

如果能够判断出当前控件的类型进而决定是否可修改动作,是否可以满足您需求?
页: [1] 2 3 4
查看完整版本: 专业版的用户设计器功能中,怎么实现禁止用户删除模板上面的元素