Feedback

C# - erweiterte Invoke Funktionen

Veröffentlicht von am 2/6/2013
(1 Bewertungen)
Einige Erweiterungen für die Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Controls.
Man kann diese Klasse beliebig erweitern, mir ging es hier nur darum nicht jedesmal die Funktionen neu schreiben zu müssen.
/// <summary>
    /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Controls<para/>
    /// (Button, TextBox, Label, ListBox, RichTextBox, DateTimePicker)<para/>
    /// </summary>
    public static class Invokes
    {
        #region ControlInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Controls<para/>
        /// (Button, TextBox, Label, ListBox, RichTextBox, DateTimePicker)<para/>
        /// _Visible = true ---> Control = sichtbar, _Visible = false ---> Control = unsichtbar<para/>
        /// _Enable = true ---> Control = aktiviert, _Enable = false ---> Control = deaktiviert
        /// </summary>
        /// <param name="_Control"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void ControlInvoke(Control _Control, bool _Visible, bool _Enable)
        {
            _Control.Invoke(new EventHandler(delegate
            {
                _Control.Visible = _Visible;
                _Control.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Controls<para/> 
        /// (Button, TextBox, Label, ListBox, RichTextBox, DateTimePicker)<para/>
        /// Änderung des Textes z.B. "Text"
        /// </summary>
        /// <param name="_Control"></param>
        /// <param name="_Text"></param>
        public static void ControlInvoke(Control _Control, string _Text)
        {
            _Control.Invoke(new EventHandler(delegate
            {
                _Control.Text = _Text;
            }));
        }
        #endregion

        #region ButtonInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Buttons<para/> 
        /// _Visible = true ---> Button = sichtbar, _Visible = false ---> Button = unsichtbar<para/>
        /// _Enable = true ---> Button = aktiviert, _Enable = false ---> Button = deaktiviert
        /// </summary>
        /// <param name="_Button"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void ButtonInvoke(Button _Button, bool _Visible, bool _Enable)
        {
            _Button.Invoke(new EventHandler(delegate
            {
                _Button.Visible = _Visible;
                _Button.Enabled = _Enable;
            }));
        }

        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Buttons<para/> 
        /// Änderung der Bezeichnung z.B. "Start"
        /// </summary>
        /// <param name="_Button"></param>
        /// <param name="_Text"></param>
        public static void ButtonInvoke(Button _Button, string _Text)
        {
            _Button.Invoke(new EventHandler(delegate
            {
                _Button.Text = _Text;
                _Button.Refresh();
            }));
        }

        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Buttons<para/> 
        /// Buttonclick fernsteuern
        /// </summary>
        /// <param name="_Button"></param>
        public static void ButtonInvoke(Button _Button)
        {
            _Button.Invoke(new EventHandler(delegate
            {
                _Button.PerformClick();
            }));
        }
        #endregion

        #region TextBoxInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von TextBox<para/> 
        /// _Visible = true ---> TextBox = sichtbar, _Visible = false ---> TextBox = unsichtbar<para/>
        /// _Enable = true ---> TextBox = aktiviert, _Enable = false ---> TextBox = deaktiviert
        /// </summary>
        /// <param name="_Textbox"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void TextBoxInvoke(TextBox _Textbox, bool _Visible, bool _Enable)
        {
            _Textbox.Invoke(new EventHandler(delegate
            {
                _Textbox.Visible = _Visible;
                _Textbox.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von TextBox<para/> 
        /// Änderung des Textes z.B. "Text"
        /// </summary>
        /// <param name="_Textbox"></param>
        /// <param name="_Text"></param>
        public static void TextBoxInvoke(TextBox _Textbox, string _Text)
        {
            _Textbox.Invoke(new EventHandler(delegate
            {
                _Textbox.Text = _Text;
            }));
        }
        #endregion

        #region LabelInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Label<para/> 
        /// _Visible = true ---> Label = sichtbar, _Visible = false ---> Label = unsichtbar<para/>
        /// _Enable = true ---> Label = aktiviert, _Enable = false ---> Label = deaktiviert
        /// </summary>
        /// <param name="_Label"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void LabelInvoke(Label _Label, bool _Visible, bool _Enable)
        {
            _Label.Invoke(new EventHandler(delegate
            {
                _Label.Visible = _Visible;
                _Label.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von Label<para/> 
        /// Änderung des Textes z.B. "Text"
        /// </summary>
        /// <param name="_Label"></param>
        /// <param name="_Text"></param>
        public static void LabelInvoke(Label _Label, string _Text)
        {
            _Label.Invoke(new EventHandler(delegate
            {
                _Label.Text = _Text;
            }));
        }
        #endregion

        #region ListBoxInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von ListBox<para/> 
        /// _Visible = true ---> Label = sichtbar, _Visible = false ---> Label = unsichtbar<para/>
        /// _Enable = true ---> Label = aktiviert, _Enable = false ---> Label = deaktiviert
        /// </summary>
        /// <param name="_Listbox"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void ListBoxInvoke(ListBox _Listbox, bool _Visible, bool _Enable)
        {
            _Listbox.Invoke(new EventHandler(delegate
            {
                _Listbox.Visible = _Visible;
                _Listbox.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von ListBox<para/> 
        /// Änderung des Textes z.B. "Text"
        /// </summary>
        /// <param name="_Listbox"></param>
        /// <param name="_Text"></param>
        public static void ListBoxInvoke(ListBox _Listbox, string _Text)
        {
            _Listbox.Invoke(new EventHandler(delegate
            {
                _Listbox.Text = _Text;
            }));
        }
        #endregion

        #region RichTextBoxInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von RichTextBox<para/>
        /// _Visible = true ---> RichTextBox = sichtbar, _Visible = false ---> Control = unsichtbar<para/>
        /// _Enable = true ---> RichTextBox = aktiviert, _Enable = false ---> Control = deaktiviert
        /// </summary>
        /// <param name="_RichTextBox"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void RichTextBoxInvoke(RichTextBox _RichTextBox, bool _Visible, bool _Enable)
        {
            _RichTextBox.Invoke(new EventHandler(delegate
            {
                _RichTextBox.Visible = _Visible;
                _RichTextBox.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von RichTextBox<para/> 
        /// Text in eine neue Zeile einfügen und automatisch scrollen.
        /// </summary>
        /// <param name="_RichTextBox"></param>
        /// <param name="_Text"></param>
        public static void RichTextBoxInvoke(RichTextBox _RichTextBox, string _AppendText)
        {
            _RichTextBox.Invoke(new EventHandler(delegate
            {
                _RichTextBox.SelectedText = String.Empty;
                _RichTextBox.AppendText(_AppendText);
                _RichTextBox.ScrollToCaret();
                _RichTextBox.Refresh();
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von RichTextBox<para/> 
        /// RichTextBox-Einträge löschen
        /// </summary>
        /// <param name="_RichTextBox"></param>
        public static void RichTextBoxInvoke(RichTextBox _RichTextBox)
        {
            _RichTextBox.Invoke(new EventHandler(delegate
            {
                _RichTextBox.Clear();
                _RichTextBox.Refresh();
            }));
        }
        #endregion

        #region DateTimePikerInvoke
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von DateTimePiker<para/>
        /// _Visible = true ---> RichTextBox = sichtbar, _Visible = false ---> Control = unsichtbar<para/>
        /// _Enable = true ---> RichTextBox = aktiviert, _Enable = false ---> Control = deaktiviert
        /// </summary>
        /// <param name="_DateTimePiker"></param>
        /// <param name="_Visible"></param>
        /// <param name="_Enable"></param>
        public static void DateTimePikerInvoke(DateTimePicker _DateTimePicker, bool _Visible, bool _Enable)
        {
            _DateTimePicker.Invoke(new EventHandler(delegate
            {
                _DateTimePicker.Visible = _Visible;
                _DateTimePicker.Enabled = _Enable;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von DateTimePiker<para/>
        /// _DateTimePickerFormat = Anzeigeformat des DateTimePicker<para/>
        /// </summary>
        /// <param name="_DateTimePiker"></param>
        /// <param name="_DateTimePickerFormat"></param>
        public static void DateTimePikerInvoke(DateTimePicker _DateTimePicker, DateTimePickerFormat _DateTimePickerFormat)
        {
            _DateTimePicker.Invoke(new EventHandler(delegate
            {
                _DateTimePicker.Format = _DateTimePickerFormat;
            }));
        }
        /// <summary>
        /// Invoke Funktion für den Zugriff aus einen anderen Thread auf Eigenschatften von DateTimePiker<para/> 
        /// Änderung des Textes z.B. "Text"
        /// </summary>
        /// <param name="_DateTimePicker"></param>
        /// <param name="_Text"></param>
        public static void DateTimePikerInvoke(DateTimePicker _DateTimePicker, string _Text)
        {
            _DateTimePicker.Invoke(new EventHandler(delegate
            {
                _DateTimePicker.Text = _Text;
            }));
        }
        #endregion
    }

2 Kommentare zum Snippet

Kretinho81 schrieb am 4/30/2013:
Wie benutze ich das dann? Muss ich diese Funktion einfach aus einem anderen Thread aufrufen?
frankkamke schrieb am 1/9/2014:
Ja die Funktionen werden in einem anderen Thread ausgeführt bzw. werden aufgerufen um auf Controls zuzugreifen.

Bsp. dein Namespace = Programm

Programm.Invokes.ControlInvoke(TextBox,"Test");
oder
Programm.Invokes.RichTextBoxInvoke(RichTextBoxName, "Text der angefügt werden soll.");
 

Logge dich ein, um hier zu kommentieren!