使用C1ReportDesigner控件 > 步骤四:添加代码以处理工具栏命令 |
为了处理工具栏按钮的单击事件,并将它们派发到相应的处理程序,请使用以下代码:
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
' 在工具栏按钮上处理单击事件 Private Sub _tb_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles _tb.ButtonClick ' 设计/预览模式 If e.Button.Equals(_btnDesign) Then SetDesignMode(True) End If If e.Button.Equals(_btnPreview) Then SetDesignMode(False) '文件命令 If e.Button.Equals(_btnNew) Then NewFile() If e.Button.Equals(_btnOpen) Then OpenFile() If e.Button.Equals(_btnSave) Then SaveFile() '允许用户撤销剪贴板操作 If e.Button.Equals(_btnCut) Or e.Button.Equals(_btnPaste) Then _c1rd.UndoStack.SaveState() End If ' 剪贴板 If e.Button.Equals(_btnCut) Then _c1rd.ClipboardHandler.Cut() If e.Button.Equals(_btnCopy) Then _c1rd.ClipboardHandler.Copy() If e.Button.Equals(_btnPaste) Then _c1rd.ClipboardHandler.Paste() ' 撤消/重做 If e.Button.Equals(_btnUndo) Then _c1rd.UndoStack.Undo() If e.Button.Equals(_btnRedo) Then _c1rd.UndoStack.Redo() ' 撤消/重做 If e.Button.Equals(_btnAddReport) Then NewReport() If e.Button.Equals(_btnDelReport) Then DeleteReport() ' 添加字段 ' (只需要设置创建信息并等待来自设计器的CreateField事件) If e.Button.Equals(_btnAddField) Then _c1rd.CreateFieldInfo = e.Button End If If e.Button.Equals(_btnAddLabel) Then _c1rd.CreateFieldInfo = e.Button End If End Sub |
C#
C# |
拷贝代码
|
---|---|
// 在工具栏按钮上处理单击事件 private void _tb_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { // 设计/预览模式 if (e.Button == _btnDesign) SetDesignMode(true); if (e.Button == _btnPreview) SetDesignMode(false); //文件命令 if (e.Button == _btnNew) NewFile(); if (e.Button == _btnOpen) OpenFile(); if (e.Button == _btnSave) SaveFile(); //允许用户撤销剪贴板操作 if (e.Button == _btnCut || e.Button == _btnPaste) _c1rd.UndoStack.SaveState(); // 剪贴板 if (e.Button == _btnCut) _c1rd.ClipboardHandler.Cut(); if (e.Button == _btnCopy) _c1rd.ClipboardHandler.Copy(); if (e.Button == _btnPaste) _c1rd.ClipboardHandler.Paste(); // 撤消/重做 if (e.Button == _btnUndo) _c1rd.UndoStack.Undo(); if (e.Button == _btnRedo) _c1rd.UndoStack.Redo(); // 撤消/重做 if (e.Button == _btnAddReport) NewReport(); if (e.Button == _btnDelReport) DeleteReport(); // 添加字段 // (只需要设置创建信息并等待来自设计器的CreateField事件) if (e.Button == _btnAddField) _c1rd.CreateFieldInfo = e.Button; if (e.Button == _btnAddLabel) _c1rd.CreateFieldInfo = e.Button; } |
这个程序将大约一半的命令分配给专门的处理程序。这些将在后面介绍。另一半(剪贴板,撤消/重做)是由C1ReportDesigner 控件直接处理。
请注意,在调用剪切和粘贴的方法之前,该代码调用SaveState 方法保存报表的当前状态。这允许用户撤销和重做剪贴板操作。在一般情况下,您的代码应该在变更的报表之前调用SaveState。