using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace AsyncOperation { public class DefaultProgressDlg : ChildWindow { public event EventHandler Cancelled; public DefaultProgressDlg() { this.HasCloseButton = false; //default size. inherited dialogs override it in the xaml. this.Width = 300; this.Height = 200; } public void EnableCancelButton(bool enabled) { //check if dialog supports cancel button if (CancelButton == null) return; //set visibility if (enabled) CancelButton.Visibility = Visibility.Visible; else CancelButton.Visibility = Visibility.Collapsed; //subscribe CancelButton click event CancelButton.Click += new RoutedEventHandler(CancelButton_Click); } private void CancelButton_Click(object sender, RoutedEventArgs e) { if (Cancelled != null) Cancelled(this, EventArgs.Empty); } protected virtual Button CancelButton { get { return null; } } protected void PostMessage(Delegate del, params object[] args) { //marhsal to ui thread if needed if (!this.Dispatcher.CheckAccess()) { this.Dispatcher.BeginInvoke(del, args); } else { del.DynamicInvoke(args); } } //individual message handlers private void OnCloseWindow() { base.Close(); } private void OnSetTitle(string text) { this.Title = text; } //public typesafe message senders public void CloseWindow() { Action a = new Action(OnCloseWindow); PostMessage(a, null); } public void SetTitle(string text) { Action<string> a = new Action<string>(OnSetTitle); PostMessage(a, text); } } }
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)