ToolStripDropDownButton在WPF中的等同性?
我对WPF技术非常新手.我已经在Winforms中发展了大约6年. 现在,我想通过学习WPF来促进我的技能一大步.我正在阅读MSDN的介绍指南,而作为个人练习,我正在尝试将Winforms UI的sructure转换为wpf UI等效. 这是Winforms控制结构的简单模型,我想在WPF中重现: 我的问题是试图重现 在 Windows形式的控件和等效的WPF控件 Microsoft只是说 toolspropdownbutton 是工具栏 ...具有组成.我根本不明白"用构图"的含义.我一直在阅读和尝试 工具栏 ,但我没有找到在工具栏中添加下拉按钮的方法. 我的问题:有人可以指导我或向我展示一个简短的示例,说明如何在工具栏中添加一个下拉按钮? 解决方案 您可以将Menu放入Toolbar中. A Menu包含一些MenuItem.每个MenuItem都有Header它的内容,可以是文本或其他元素.另外,每个MenuItem可以有一些嵌套或MenuItem
12 2024-01-06
编程技术问答社区
如何给ToolStripItemCollection中的项目排序?
我通过以下方式动态地添加字符串(项目): Dim onClickHandler As System.EventHandler = New System.EventHandler(AddressOf Symbol_Click) Dim item As New ToolStripMenuItem(newSymbol, Nothing, onClickHandler) SomeToolStripMenuItem.DropDownItems.Add(item) 因此,这些项目在一个GO中不会添加,而是基于整个程序会话中的外部触发器.每次添加新项目时,我都想对下拉列表进行排序.我有什么选择? 解决方案 由于ToolStripItemCollection没有"排序"功能,您必须聆听更改并编写自己的排序方法: Private Sub ResortToolStripItemCollection(coll As ToolStripItemCollection) Dim oA
4 2024-01-05
编程技术问答社区
C# Winfoms Toolstripdropdown在点击按钮时关闭
我在Windows表单中使用了ToolStripdropdown,以单击另一个按钮显示按钮的列表. var td = new ToolStripDropDown { AutoSize = true, DropShadowEnabled = false, BackColor = Color.Transparent, Margin = Padding.Empty, Padding = Padding.Empty }; var host = new ToolStripControlHost(panel) { BackColor = Color.Transparent, Margin = Padding.Empty, Padding =
2 2024-01-04
编程技术问答社区
Windows Forms | ToolStripItem Visible属性总是被设置为false
我正在研究MDI Windows Forms应用程序.我的父母表格有ToolStrip菜单和一些ToolStripDropDownButtons.我想将ToolStripDropDownButton的Visible属性更改为相应地符合用户许可的某些ToolStripItems(子按钮). 这是我写过的方法的一部分: private void SetToolStripDropDownVisibility(ToolStripDropDownButton mainBtn, params ToolStripItem[] item) { mainBtn.Visible = false; foreach (ToolStripItem tempItem in item) { tempItem.Visible = true; } } 我将作为第一个参数ToolStripDropDownButton和所有其他"子按钮"作为参数列表.
10 2023-12-09
编程技术问答社区
Debugger Visualizer Winform ToolStripDropDownMenu ComboBox仅在首次显示时显示项目
我有一个Visual Studio Debugger Visualizer项目,当我向A ToolStripDropDownMenu添加ToolStripComboBox时,Combobox的项目仅出现在第一次显示表单时出现. 这样: winform代码的最基本版本显示了此问题: public class MyVisualizerDialog : Form { public MyVisualizerDialog() { var toolStripComboBox = new ToolStripComboBox { Items = { "One", "Two", "Three" } }; var toolStripDownDown = new ToolStripDropDownMenu { Items = { toolStrip
6 2023-12-09
编程技术问答社区
如何在代码中设置ToolStripMenuItem的可见性?
我在Windows表单应用程序中有一些代码. 我想在代码中更改下拉下拉工具速度的可见性. 我设置了可见的属性,但是当我设置断点并检查属性值时,这些项目的可见性没有更改. 这是我的代码: foreach (ToolStripMenuItem it in _frmMain.menuStripMain.Items) { foreach (ToolStripMenuItem i in it.DropDownItems) { if (i.Text == this._listAppSchema[0].ObjectName.ToString()) { i.Visible = true; } else { i.Visible = false; } }
16 2023-12-09
编程技术问答社区
当DropDownStyle为简单时,ToolStripCombobox显示在屏幕的左上角。
我有一个ToolStripCombobox,当我将其DropDownStyle设置为Simple时.我第一次打开菜单时,它在屏幕的左上角显示. 但是,当我第二次选择同一项目时,它将在正确的位置显示. 有没有办法防止代码在屏幕左上角显示列表? 预先感谢您的任何帮助. 第一次 第二次 解决方案 解决问题,将此代码放在Load表单的事件中: var item = toolStripComboBox1; var createControl = item.Control.Parent.GetType().GetMethod("CreateControl", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); createControl.Invoke(item.Control.Parent, new object[] { true });
2 2023-12-09
编程技术问答社区
将ToolBar转换为ToolStrip控件,MouseHover不起作用
我有一个大型的Winform应用程序,我们正在努力修改外观.我正在将System.Windows.Forms.Toolbar替换为System.Windows.Forms.ToolStrip Control.我使用自定义渲染器来更改下拉箭头颜色.借助默认渲染器,我会在工具条中获得鼠标悬停效果,但是通过自定义渲染,它似乎不起作用.这是我的代码. 工具条初始化:我删除了阅读舒适的不必要代码 this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); this.toolStrip1.ImageList = this.imag
2 2023-10-24
编程技术问答社区
C#: ToolStripDropDown doesn't Dispose/DestroyHandle
我正在使用ToolStripDropDown显示selectionPopup. ToolStripDropDown包含一些带有运行线程的自定义控件. 这些线程以on handhandledestroy的事件结束,但是由于某种原因,ToolStripDropDown在关闭后不会处置/销毁其手柄. 在闭合事件上处置ToolStripDropDown给我一个例外,因为任何东西仍然可以访问工具流动. 我怎么知道自定义控件是否仍在使用中? 自定义控制: public class CControl : Control { Thread StyleThread; Object lockOBJ = new Object(); bool abortthread = false; public CControl() { this.SetStyle(ControlStyles.AllPaintingInWmPaint |
18 2023-04-07
编程技术问答社区
如何关闭一个被设置为自动关闭=false的工具条菜单?
我有一个用户可以切换的项目菜单.我希望菜单保持打开状态,以便用户可以检查所需的所有项目.我设置了Autoclose = false,现在效果很好.但是,我现在也无法关闭窗口大声笑.我尝试将菜单单击到表单上,点击逃生,点击菜单项,打开菜单的钥匙库,无效. 理想情况下,我希望用户能够单击表单或基本上除了菜单之外的任何其他内容以关闭它或按Escape.我将如何实现?我尝试在表单上创建一个gotFocus事件,并在其中进行项目.在那里hidedropdown,但没有骰子. 谢谢! 解决方案 生成表单的单击事件,然后通过并为每个没有其单击事件的控件进行浏览,将其单击事件设置为表单的单击事件. 在此事件中,包括隐藏菜单的代码:toolStripDropDownButton.HideDropDown(); 将代码复制到其他控件的任何现有单击事件. 这是我在单击表格上的任何地方时处理一个月的方式. ,如果您还要将sustave作为选项包括在内,请在键盘事件中执
86 2023-02-21
编程技术问答社区
如何找到带有名称的工具条菜单项?
我已将 menuStrip1 项目的可见属性设置为 false foreach (ToolStripMenuItem itm in menuStrip1.Items) { itm.Visible = false; } 现在我知道 menustrip1 的 toolStripMenuItem and dropDownItem 的名称了.如何激活所需的 toolStripMenuItem and dropDownItem. 我有 string mnItm = "SalesToolStripMenuItem"; string ddItm = "invoiceToolStripMenuItem"; 现在我想为这两个(toolStripMenuItem and dropDownItem) 项设置可见真.我怎样才能做到这一点?我只知道那些名字. 解决方案 你应该试试这样的: string strControlVal ="somecontrol"; //"Sales
126 2022-08-11
编程技术问答社区
获取ToolStripDropDownMenu的(ToolStrip)父节点。
我正在编写一个自定义ToolStripProfessionalRenderer 占用,以下覆盖: protected override void OnRenderImageMargin(ToolStripRenderEventArgs e) { if(e.ToolStrip is MenuStrip) { // It never is. It's always ToolStripDropDownMenu } } 我猜OnRenderImageMargin通过下拉菜单调用,因为这是将呈现的内容,但是我想获取导致OnRenderImageMargin呼叫的父级ToolStrip/MenuStrip/StatusStrip. 这是可能的吗? 解决方案 我认为e.ToolStrip.Parent属性将是关键,但它总是null. 一个选项是在ToolStripProfessionalRenderer中创建构造函数,并通过对控件
1248 2022-07-19
编程技术问答社区