Reports for WinForms | ComponentOne
Using the C1ReportDesigner Control / Step 3 of 9: Add Code to Update the User Interface
In This Topic
    Step 3 of 9: Add Code to Update the User Interface
    In This Topic

    The simple designer has buttons that may be enabled or disabled, depending on whether the clipboard and undo buffer are empty, whether a file is loaded, and so on. All this functionality is implemented in a single method, called UpdateUI.

    UpdateUI is called often to make sure the UI reflects the state of the application. The first call should be made in response to the Form_Load event, to initialize the toolbar and form caption. After pasting the following code into the project, remember to set the names of the buttons in the toolbar control to match the ones used in the UpdateUI routine.

    Add the following code to update the user interface:

    To write code in Visual Basic

    Visual Basic
    Copy Code
    ' update UI on startup to show form title and disable clipboard and        
    ' undo/redo buttons            
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        
        UpdateUI()        
    End Sub        
    Private  Sub UpdateUI()        
        ' update caption            
        _fileName = _appName        
        If _fileName.Length > 0 Then        
        _fileName = String.Format("{0} - [{1}]", _appName, _fileName)         
            If _dirty Then _fileName = _fileName + " *"        
    End If
      
        ' push/release design/preview mode buttons           
        Dim design As Boolean =  _c1rd.Visible AndAlso (Not IsNothing(_c1rd.Report))        
        _btnDesign.Pushed = design        
        _btnPreview.Pushed = Not design
    
        ' enable/disable buttons        
        _btnCut.Enabled = design AndAlso _c1rd.ClipboardHandler.CanCut        
        _btnCopy.Enabled = design AndAlso _c1rd.ClipboardHandler.CanCut        
        _btnPaste.Enabled = design AndAlso _c1rd.ClipboardHandler.CanPaste        
        _btnUndo.Enabled = design AndAlso _c1rd.UndoStack.CanUndo        
        _btnRedo.Enabled = design AndAlso _c1rd.UndoStack.CanRedo
    
        Dim reportSelected As Boolean =  design AndAlso Not (IsNothing(_list.SelectedItem))        
        _btnAddReport.Enabled = _c1rd.Visible        
        _btnDelReport.Enabled = reportSelected        
        _btnAddField.Enabled  = reportSelected         
        _btnAddLabel.Enabled  = reportSelected        
    End Sub
    

    To write code in C#

    C#
    Copy Code
    // update UI on startup to show form title and disable clipboard and         
    // undo/redo buttons         
    private void Form1_Load(object sender, System.EventArgs e)        
    {        
        UpdateUI();        
    }        
    private void UpdateUI()        
    {        
        // update caption         
        Text = (_fileName != null && _fileName.Length > 0)        
        ? string.Format("{0} - [{1}] {2}", _appName, _fileName, _dirty? "*": "")        
        : _appName;       
            
        // push/release design/preview mode buttons         
        bool design = _c1rd.Visible && _c1rd.Report != null;       
        _btnDesign.Pushed  = design;        
        _btnPreview.Pushed = !design;      
            
        // enable/disable buttons         
        _btnCut.Enabled   = design && _c1rd.ClipboardHandler.CanCut;        
        _btnCopy.Enabled  = design && _c1rd.ClipboardHandler.CanCut;        
        _btnPaste.Enabled = design && _c1rd.ClipboardHandler.CanPaste;        
        _btnUndo.Enabled  = design && _c1rd.UndoStack.CanUndo;        
        _btnRedo.Enabled  = design && _c1rd.UndoStack.CanRedo;
    
        bool reportSelected = design && _list.SelectedItem != null;        
        _btnAddReport.Enabled = _c1rd.Visible;        
        _btnDelReport.Enabled = reportSelected;        
        _btnAddField.Enabled  = reportSelected;         
        _btnAddLabel.Enabled  = reportSelected;        
    }
    

    Notice how UpdateUI uses the CanCut, CanPaste, CanUndo, and CanRedo properties to enable and disable toolbar buttons.