public void UpdateControlColorsFonts_MenuItems(ToolStripMenuItem control, Color backColor, Color foreColor, Font font) { string type = control.GetType().ToString(); if (type != "System.Windows.Forms.ToolStripSeparator") { control.BackColor = backColor; control.ForeColor = foreColor; control.Font = font; foreach (ToolStripMenuItem item in control.DropDownItems) { type = item.GetType().ToString(); if (type != "System.Windows.Forms.ToolStripSeparator") { item.BackColor = backColor; item.ForeColor = foreColor; item.Font = font; foreach (ToolStripMenuItem subitem in item.DropDownItems) { UpdateControlColorsFonts_MenuItems(subitem, backColor, foreColor, font); } } } } }
private bool UncheckAllMenuItemsExcept(ToolStripItemCollection items, ToolStripMenuItem exceptItem) { bool found = false; foreach (ToolStripItem item in items) { if (item.GetType() == exceptItem.GetType()) { ToolStripMenuItem itemTypeChecked = (ToolStripMenuItem)item; if (itemTypeChecked != exceptItem) { itemTypeChecked.Checked = false; } else { found = true; } if (itemTypeChecked.DropDownItems.Count > 0) { if (this.UncheckAllMenuItemsExcept(itemTypeChecked.DropDownItems, exceptItem)) { itemTypeChecked.CheckState = CheckState.Indeterminate; } } } } return(found); }
void FindMenuItem(ToolStripMenuItem menuItem) { menuItem.MouseEnter += FormEvents.MenuItem_MouseEnter; menuItem.MouseUp += FormEvents.MouseUp; var item = new FormControl { Name = menuItem.Name, ParentFormID = activeForm.GetID(), Type = menuItem.GetType().ToString(), OriginalText = menuItem.Text }; item.Insert(); if (menuItem.HasDropDownItems) { foreach (var childItem in menuItem.DropDownItems) { if (childItem is ToolStripMenuItem) { FindMenuItem(childItem as ToolStripMenuItem); } } } }
private ToolStripMenuItem GetItem(ToolStripMenuItem item, string text) { if (item.Text == text && !item.HasDropDownItems) { return(item); } if (item.HasDropDownItems) { foreach (ToolStripItem temp in item.DropDownItems) { if (item.GetType() != typeof(ToolStripMenuItem)) { continue; } if (temp.Text == text && !((ToolStripMenuItem)temp).HasDropDownItems) { return(temp as ToolStripMenuItem); } if (((ToolStripMenuItem)temp).HasDropDownItems) { return(GetItem(temp as ToolStripMenuItem, text)); } } } return(null); }
private bool PerformContextMenuClick(int menuID, ToolStripMenuItem item) { if (item == null) { return(false); } int id = 0; Type itemType = item.GetType(); try { id = (int)itemType.InvokeMember("MenuID", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance, null, item, new object[] { }); } catch { } if (menuID == id) { item.PerformClick(); return(true); } // check for child menu items: foreach (ToolStripMenuItem menuItem in item.DropDownItems) { if (PerformContextMenuClick(menuID, menuItem)) { return(true); } } return(false); }
public static void RemoveClickEvent(ToolStripMenuItem b) { var f1 = typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic); object obj = f1.GetValue(b); var pi = b.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); var list = (EventHandlerList)pi.GetValue(b, null); list.RemoveHandler(obj, list[obj]); }
static void CallClickEvent(ToolStripMenuItem i) { i.GetType().GetMethod("OnClick", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(i, new object [] { new EventArgs () }); }
/// <summary> /// Зарежда Name и Text на контролите от ToolStripItemCollection /// </summary> private void Load_ToolStripItems(TranslateItem aTItem, ToolStripItemCollection aTlStrpItms) { foreach (ToolStripItem tsi in aTlStrpItms) { if (tsi.GetType() == typeof(ToolStripMenuItem)) { ToolStripMenuItem tsmi = (ToolStripMenuItem)tsi; TranslateItem NewTItem = aTItem.GetItem(tsmi.Name); if (NewTItem == null) { _IsEditLngPack = true; NewTItem = aTItem.ItemAdd(tsmi.Name, tsmi.Text, tsmi.GetType()); } // Load_ToolStripItems(NewTItem, tsmi.DropDownItems); } } }
private void tsmi_MouseDown(object sender, MouseEventArgs e) { //b.Info.Log(traceSbtControls, "MouseDown occurs for managed toolstrip item."); ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender; if ((clickedItem.Image != null) && ((clickedItem.DisplayStyle == ToolStripItemDisplayStyle.Image) || (clickedItem.DisplayStyle == ToolStripItemDisplayStyle.ImageAndText))) { // b.Verbose.Log("Image processing is active, attempting to resolve click location"); BindingFlags getPropertyFlags = BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public; PropertyInfo internalLayoutProperty = clickedItem.GetType().GetProperty("InternalLayout", getPropertyFlags); object internalLayoutValue = internalLayoutProperty.GetValue(clickedItem, null); PropertyInfo imageRectangleProperty = internalLayoutValue.GetType().GetProperty("ImageRectangle", getPropertyFlags); Rectangle imageRectangle = (Rectangle)imageRectangleProperty.GetValue(internalLayoutValue, null); IsImageClick = imageRectangle.Contains(e.Location); NextCloseNotAllowed = IsImageClick && PreventClose; // b.Info.Log(traceSbtControls, "LeavingMouseDown IsImageClick=" + IsImageClick.ToString() + " NextCloseNotAllowed=" + NextCloseNotAllowed.ToString()); } }
private static void PopulateMenuItemrecursive(ToolStripMenuItem ts, List <string> listmenuitem) { for (int i = 0; i < ts.DropDownItems.Count; i++) { if (ts.GetType() != typeof(ToolStripMenuItem)) { continue; } if (listmenuitem.Contains(ts.DropDownItems[i].Tag != null ? ts.DropDownItems[i].Tag : ts.DropDownItems[i].Text)) { ts.DropDownItems[i].Visible = true; } else { ts.DropDownItems[i].Visible = false; } PopulateMenuItemrecursive((ToolStripMenuItem)ts.DropDownItems[i], listmenuitem); } }
private void всеПоля_CheckedChanged(object sender, EventArgs e) { if (flagToChange) { ToolStripMenuItem curItem = new ToolStripMenuItem(); if (curItem.GetType() == sender.GetType()) { curItem = (ToolStripMenuItem)sender; if (curItem.OwnerItem == id_dev) { dev_checkAll.Checked = false; } if (curItem.OwnerItem == par) { par_checkAll.Checked = false; } } draw(); } }
private bool locateItem(ToolStripItem it, Dictionary <string, string> d, ref Rectangle rect, ref IntPtr h) { if (it is ToolStripMenuItem) { ToolStripMenuItem item = it as ToolStripMenuItem; if (d["FullName"] == item.GetType().FullName && d["Name"] == item.Name && d["Text"] == item.Text) { rect = item.DropDown.Bounds; h = item.DropDown.Handle; return(true); } foreach (ToolStripItem i in item.DropDownItems) { if (locateItem(i, d, ref rect, ref h)) { if (h == IntPtr.Zero) { h = item.DropDown.Handle; } return(true); } } } else { if (d["FullName"] == it.GetType().FullName && d["Name"] == it.Name && d["Text"] == it.Text) { rect = it.Bounds; //h = item.DropDown.Handle;//handle由上级决定 return(true); } } return(false); }
private void WireEvent(ToolStripMenuItem oToolStripMenuItem, Form oForm, string szEventName, string szMethodName) { MethodInfo oMethodInfo; Delegate oDelegate; EventInfo oEventInfo = oToolStripMenuItem.GetType().GetEvent(szEventName); Type oType = oForm.GetType(); oMethodInfo = oType.GetMethod( szMethodName, System.Reflection.BindingFlags.IgnoreCase | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (oMethodInfo != null) { oDelegate = Delegate.CreateDelegate(oEventInfo.EventHandlerType, oForm, oMethodInfo.Name); oEventInfo.AddEventHandler(oToolStripMenuItem, oDelegate); } }
public static void SetSubControl(Control tb, string oldtitle, string newtitle) { switch (tb.GetType().ToString()) { case "System.Windows.Forms.TextBox": ((TextBox)tb).ShortcutsEnabled = true; break; case "System.Windows.Forms.ComboBox": break; case "System.Windows.Forms.MenuStrip": MenuStrip ms = (MenuStrip)tb; for (int k = 0; k < ms.Items.Count; k++) { ToolStripMenuItem menuitem = (ToolStripMenuItem)ms.Items[k]; if (menuitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { menuitem.Text = newtitle; break; } else { SetSubMenu((ToolStripMenuItem)ms.Items[k], oldtitle, newtitle); } } break; case "LXMS.ToolStripEx": case "System.Windows.Forms.ToolStrip": ToolStrip ts = (ToolStrip)tb; for (int k = 0; k < ts.Items.Count; k++) { ToolStripItem toolitem = (ToolStripItem)ts.Items[k]; if (toolitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (toolitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { toolitem.Text = newtitle; break; } else if (toolitem.GetType().ToString() == "System.Windows.Forms.ToolStripDropDownButton") { ToolStripDropDownButton tsb = (ToolStripDropDownButton)toolitem; for (int m = 0; m < tsb.DropDownItems.Count; m++) { if (tsb.DropDownItems[m].GetType().ToString() == "System.Windows.Forms.ToolStripControlHost") { continue; } ToolStripDropDownItem tsbitem = (ToolStripDropDownItem)tsb.DropDownItems[m]; if (tsbitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (tsbitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { tsbitem.Text = newtitle; break; } } } } else if (toolitem.GetType().ToString() == "System.Windows.Forms.ToolStripSplitButton") { ToolStripSplitButton tsb = (ToolStripSplitButton)toolitem; for (int m = 0; m < tsb.DropDownItems.Count; m++) { ToolStripMenuItem tsbitem = (ToolStripMenuItem)tsb.DropDownItems[m]; if (tsbitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (tsbitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { tsbitem.Text = newtitle; break; } } } } } } break; case "LXMS.TabControlEx": case "System.Windows.Forms.TabControl": TabControl tc = (TabControl)tb; foreach (TabPage tp in tc.Controls) { if (tp.Text.ToLower() == oldtitle) { tp.Text = newtitle; //break; } foreach (Control ct in tp.Controls) { SetSubControl(ct, oldtitle, newtitle); } } break; case "System.Windows.Forms.SplitContainer": SplitContainer sc = (SplitContainer)tb; SetSubControl(sc.Panel1, oldtitle, newtitle); SetSubControl(sc.Panel2, oldtitle, newtitle); break; default: if (!string.IsNullOrEmpty(tb.Text) && tb.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { tb.Text = newtitle; } if (tb.Controls.Count > 0) { foreach (Control ch in tb.Controls) { SetSubControl(ch, oldtitle, newtitle); } } break; } System.Reflection.FieldInfo[] fieldInfo = tb.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); for (int m = 0; m < fieldInfo.Length; m++) { switch (fieldInfo[m].FieldType.Name) { case "ContextMenuStrip": ContextMenuStrip cms = (ContextMenuStrip)fieldInfo[m].GetValue(tb); for (int k = 0; k < cms.Items.Count; k++) { if (cms.Items[k].GetType().ToString() == "System.Windows.Forms.ToolStripMenuItem") { ToolStripMenuItem menuitem = (ToolStripMenuItem)cms.Items[k]; if (menuitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { menuitem.Text = newtitle; break; } else { SetSubMenu((ToolStripMenuItem)cms.Items[k], oldtitle, newtitle); } } } break; default: break; } } }
public static void InitLanguage(Form frm) { frm.BackColor = frmOptions.BACKCOLOR; if (Util.language == "0") { return; } _sb.Clear(); frm.Text = TranslateString(frm.Text); string[] titles = Properties.Resources.Language.Replace("\n", "").Replace("\r", "").Split(';'); if (titles != null) { for (int i = 0; i < titles.Length; i++) { string[] title = titles[i].Split('-'); if (title.Length == 2) { string oldtitle, newtitle; oldtitle = title[0].Replace("\r\n", "").ToLower(); newtitle = title[1].Replace("\r\n", ""); foreach (Control tb in frm.Controls) { switch (tb.GetType().ToString()) { case "System.Windows.Forms.TextBox": ((TextBox)tb).ShortcutsEnabled = true; break; case "System.Windows.Forms.ComboBox": break; case "System.Windows.Forms.MenuStrip": MenuStrip ms = (MenuStrip)tb; for (int k = 0; k < ms.Items.Count; k++) { ToolStripMenuItem menuitem = (ToolStripMenuItem)ms.Items[k]; if (menuitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { menuitem.Text = newtitle; break; } else { SetSubMenu((ToolStripMenuItem)ms.Items[k], oldtitle, newtitle); } } break; case "LXMS.ToolStripEx": case "System.Windows.Forms.ToolStrip": ToolStrip ts = (ToolStrip)tb; string controltype = string.Empty; for (int k = 0; k < ts.Items.Count; k++) { ToolStripItem toolitem = (ToolStripItem)ts.Items[k]; if (toolitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (toolitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { toolitem.Text = newtitle; break; } else if (toolitem.GetType().ToString() == "System.Windows.Forms.ToolStripDropDownButton") { ToolStripDropDownButton tsb = (ToolStripDropDownButton)toolitem; for (int m = 0; m < tsb.DropDownItems.Count; m++) { ToolStripDropDownItem tsbitem = (ToolStripDropDownItem)tsb.DropDownItems[m]; if (tsbitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (tsbitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { tsbitem.Text = newtitle; break; } } } } else if (toolitem.GetType().ToString() == "System.Windows.Forms.ToolStripSplitButton") { ToolStripSplitButton tsb = (ToolStripSplitButton)toolitem; for (int m = 0; m < tsb.DropDownItems.Count; m++) { if (tsb.DropDownItems[m].GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { ToolStripMenuItem tsbitem = (ToolStripMenuItem)tsb.DropDownItems[m]; SetSubMenu((ToolStripMenuItem)tsbitem, oldtitle, newtitle); if (tsbitem.GetType().ToString() != "System.Windows.Forms.ToolStripSeparator") { if (tsbitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { tsbitem.Text = newtitle; break; } } } } } } } break; case "LXMS.TabControlEx": case "System.Windows.Forms.TabControl": TabControl tc = (TabControl)tb; foreach (TabPage tp in tc.Controls) { _sb.Append(tp.Text.ToString() + "-" + oldtitle + "\r\n"); if (tp.Text.ToLower() == oldtitle) { tp.Text = newtitle; break; } foreach (Control ct in tp.Controls) { SetSubControl(ct, oldtitle, newtitle); } } break; case "System.Windows.Forms.SplitContainer": SplitContainer sc = (SplitContainer)tb; SetSubControl(sc.Panel1, oldtitle, newtitle); SetSubControl(sc.Panel2, oldtitle, newtitle); break; default: SetSubControl(tb, oldtitle, newtitle); break; } } System.Reflection.FieldInfo[] fieldInfo = frm.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); for (int m = 0; m < fieldInfo.Length; m++) { switch (fieldInfo[m].FieldType.Name) { case "ContextMenuStrip": ContextMenuStrip cms = (ContextMenuStrip)fieldInfo[m].GetValue(frm); for (int k = 0; k < cms.Items.Count; k++) { if (cms.Items[k].GetType().ToString() == "System.Windows.Forms.ToolStripMenuItem") { ToolStripMenuItem menuitem = (ToolStripMenuItem)cms.Items[k]; if (menuitem.Text.Trim().ToLower().CompareTo(oldtitle) == 0) { menuitem.Text = newtitle; break; } else { SetSubMenu((ToolStripMenuItem)cms.Items[k], oldtitle, newtitle); } } } break; default: break; } } } } } string retstr = _sb.ToString(); }
public static ToolStripMenuItem CloneToolStripMenuItem(ToolStripMenuItem itemToClone) { ToolStripMenuItem clonedItem = new ToolStripMenuItem(); PropertyInfo itemToClonePropertyInfo = itemToClone.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList itemToCloneEventHandlerList = (EventHandlerList)itemToClonePropertyInfo.GetValue(itemToClone, null); PropertyInfo clonedItemPropertyInfo = clonedItem.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList clonedItemEventHandlerList = (EventHandlerList)clonedItemPropertyInfo.GetValue(clonedItem, null); clonedItemEventHandlerList.AddHandlers(itemToCloneEventHandlerList); clonedItem.AccessibleName = itemToClone.AccessibleName; clonedItem.AccessibleRole = itemToClone.AccessibleRole; clonedItem.Alignment = itemToClone.Alignment; clonedItem.AllowDrop = itemToClone.AllowDrop; clonedItem.Anchor = itemToClone.Anchor; clonedItem.AutoSize = itemToClone.AutoSize; clonedItem.AutoToolTip = itemToClone.AutoToolTip; clonedItem.BackColor = itemToClone.BackColor; clonedItem.BackgroundImage = itemToClone.BackgroundImage; clonedItem.BackgroundImageLayout = itemToClone.BackgroundImageLayout; clonedItem.Checked = itemToClone.Checked; clonedItem.CheckOnClick = itemToClone.CheckOnClick; clonedItem.CheckState = itemToClone.CheckState; clonedItem.DisplayStyle = itemToClone.DisplayStyle; clonedItem.Dock = itemToClone.Dock; clonedItem.DoubleClickEnabled = itemToClone.DoubleClickEnabled; clonedItem.Enabled = itemToClone.Enabled; clonedItem.Font = itemToClone.Font; clonedItem.ForeColor = itemToClone.ForeColor; clonedItem.Image = itemToClone.Image; clonedItem.ImageAlign = itemToClone.ImageAlign; clonedItem.ImageScaling = itemToClone.ImageScaling; clonedItem.ImageTransparentColor = itemToClone.ImageTransparentColor; clonedItem.Margin = itemToClone.Margin; clonedItem.MergeAction = itemToClone.MergeAction; clonedItem.MergeIndex = itemToClone.MergeIndex; clonedItem.Name = itemToClone.Name; clonedItem.Overflow = itemToClone.Overflow; clonedItem.Padding = itemToClone.Padding; clonedItem.RightToLeft = itemToClone.RightToLeft; clonedItem.ShortcutKeys = itemToClone.ShortcutKeys; clonedItem.ShowShortcutKeys = itemToClone.ShowShortcutKeys; clonedItem.Tag = itemToClone.Tag; clonedItem.Text = itemToClone.Text; clonedItem.TextAlign = itemToClone.TextAlign; clonedItem.TextDirection = itemToClone.TextDirection; clonedItem.TextImageRelation = itemToClone.TextImageRelation; clonedItem.ToolTipText = itemToClone.ToolTipText; clonedItem.Available = itemToClone.Available; foreach (ToolStripMenuItem dropDownItem in itemToClone.DropDownItems) { clonedItem.DropDownItems.Add(CloneToolStripMenuItem(dropDownItem)); } if (!itemToClone.AutoSize) { clonedItem.Size = itemToClone.Size; } return(clonedItem); }