using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace RyzStudio.Windows.Forms { public class ThreadControl { public static void AddControl(Control control, Control value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Controls.Add(value); })); } else { control.Controls.Add(value); } } public static void AddItem(ListBox control, string value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Items.Add(value); })); } else { control.Items.Add(value); } } public static void AddLine(RichTextBox control, string text) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Text += text + Environment.NewLine; })); } else { control.Text += text + Environment.NewLine; } } public static void Clear(ListBox control) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Items.Clear(); })); } else { control.Items.Clear(); } } public static void Clear(FlowLayoutPanel control) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Controls.Clear(); })); } else { control.Controls.Clear(); } } public static List FindChildControl(Control control) where T : Control { List rs = new List(); foreach (Control item in control.Controls) { var ctr = item as T; if (ctr == null) { rs.AddRange(FindChildControl(item)); } else { rs.Add(ctr); } } return rs; } public static string GetText(Control control, bool doTrim = true) { string rv = string.Empty; if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { rv = (doTrim ? control.Text?.Trim() : control.Text); })); } else { rv = (doTrim ? control.Text?.Trim() : control.Text); } return rv; } public static int GetValue(NumericUpDown sender) { int rv = 0; if (sender.InvokeRequired) { sender.Invoke(new MethodInvoker(() => { rv = (int)sender.Value; })); } else { rv = (int)sender.Value; } return rv; } public static string GetSelectedValue(ListBox sender) { string rv = string.Empty; if (sender.InvokeRequired) { sender.Invoke(new MethodInvoker(() => { rv = (sender.SelectedItem == null) ? string.Empty : sender.SelectedItem.ToString(); })); } else { rv = (sender.SelectedItem == null) ? string.Empty : sender.SelectedItem.ToString(); } return rv; } public static void SetClear(Label control) => SetText(control, string.Empty); public static void SetClear(PictureBox control) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Image = null; })); } else { control.Image = null; } } public static void SetClear(DataGridView control) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Rows.Clear(); })); } else { control.Rows.Clear(); } } public static void SetHeight(Control control, int value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Height = value; })); } else { control.Height = value; } } public static void SetSize(Control control, int width, int height) => SetSize(control, new Size(width, height)); public static void SetSize(Control control, Size value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Size = value; })); } else { control.Size = value; } } public static void SetText(Control control, string text) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Text = text; })); } else { control.Text = text; } } public static void SetTopMost(Form control, bool value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.TopMost = value; })); } else { control.TopMost = value; } } public static void SetValue(Control control, string value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Text = value; })); } else { control.Text = value; } } public static void SetVisible(Control control, bool value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Visible = value; })); } else { control.Visible = value; } } public static void SetVisible(Form control, bool value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { if (value) { control.ShowInTaskbar = value; control.Opacity = 100; control.Visible = value; } else { control.Visible = value; control.ShowInTaskbar = value; control.Opacity = 0; } })); } else { if (value) { control.ShowInTaskbar = value; control.Opacity = 100; control.Visible = value; } else { control.Visible = value; control.ShowInTaskbar = value; control.Opacity = 0; } } } public static void SetWidth(Control control, int value) { if (control.InvokeRequired) { control.Invoke(new MethodInvoker(() => { control.Width = value; })); } else { control.Width = value; } } } }