关于WinForms .Net核心的工具条问题
我正在用.NET Core进行Winforms应用程序,以学习一些基本内容.这是一个简单的应用程序,我将文本框中的一些文本写入文件(基本上像记事本). . 现在,我想添加带有工具键盘的工具条来制作一个新文件和一个工具stripbutton,以将文本保存到文件等. . 因此,我从工具箱中添加了工具条,然后将其拖动到我的form1.cs [design].然后,我右键单击工具条,然后单击"插入标准项目".按钮正在添加到工具条中. 现在,我的问题是我要在按钮中添加一个点击事件,但是我不能单独单击工具.因此,我必须进入Designer.cs来添加点击事件.例如: this.newToolStripButton.Click += new System.EventHandler(this.btnNewFile_Click); 我只是在.NET Framework中使用Winforms应用程序尝试了一下,在那里我只需双击ToolStripButtons即可添加EventHand
2 2024-01-08
编程技术问答社区
试图在ToolStripPanel中与现有的ToolStrip并排添加一个ToolStrip
我正在使用.NET 2.0与Visual Studio 2005一起使用,我正在尝试在表单顶部添加两个不同的工具包,以便它们并排显示.我希望它像Word 2003一样,您可以在同一行中添加多个工具包,并使它们相互一致,而不是将一行专用于每个工具条. 因此,我添加了一个工具板块并将其停靠到表单的顶部(我不使用工具扫描剂,因为我不需要所有额外的面板;我只需要顶部的一个).我添加了两个工具条,并将其拉伸属性设置为false.我可以让它们并排出现在设计器窗口中,但是在运行时,工具strippanel将工具串分开,并为每个工具划分提供自己的专用行.好像要增加对伤害的侮辱,当我停止调试并返回设计师时,我发现设计师也将工具杆移至自己的行!我在这里做错了吗? 我整天都在谷歌搜索,并找到了一些有关woolstrippanelrow对象的信息,但是我看不到一种简单的方法来添加工具包(即它没有toolstrippanelrow.controls.adds.add方法或类似的内容),它所拥有的是一个
14 2024-01-07
编程技术问答社区
ContextMenuStrip的SourceControl在ToolStripMenuItem Click中是空的?
我有单个ContextMenuStrip附加到更多控件. 在使用Opening ContextMenuStrip的事件中,用于过滤/禁用某些上下文条目. 在这种情况下,属性ContexteMenuStrip.SourceControl设置正确. 我遇到的问题是ToolStripMenuItem的单击事件.此项目在ToolStripDropDown内. 我获得了带代码的父项目: Dim tsmi As ToolStripMenuItem = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ToolStripDropDown).OwnerItem, ToolStripMenuItem) 然后我得到上下文Menustrip: Dim contextMenu As ContextMenuStrip = DirectCast(tsmi.Owner, ContextMenuStri
2 2024-01-07
编程技术问答社区
toolStripComboBox设置字体样式?
我阅读了此主题 http:http://technicalsol.blogspot. com/2009/03/combobox-set-font-style.html 与combobox一起 我需要你的帮助.我正在编写C#. 的简单Wordpad 解决方案 这是因为工具combobox源自工具controlhost,而不是combobox.您需要使用其控制属性到达组合框.这样: public partial class Form1 : Form { public Form1() { InitializeComponent(); ComboBox box = (ComboBox)toolStripComboBox1.Control; box.DrawMode = DrawMode.OwnerDrawVariable; box.MeasureItem += new MeasureItemEventHandle
2 2024-01-07
编程技术问答社区
ToolStrip vs MenuStrip-我可以让它们的呈现方式相同吗?
我需要在我的应用程序中直接显示Menustrip下方的工具条,但是设置RenderMode =专业的每个工具条并未给出相同的结果.他们都显示背景梯度,但不显示相同的梯度. 是否有某种方法可以将Menustrip渲染用于工具条,反之亦然? 或者有人可以建议如何最好地自己实施梯度,我可以在子类渲染器中执行? 稍后添加: 非常感谢 nobugz 在下面的回答.有用的材料也在中. 还有另一个问题 - 如果我将自定义渲染器置于工具型渲染器上,并且覆盖了OnrendertoolStripbackground,那么我仍然在工具条上弯曲右手,但在我的Menustrip上没有弯曲.是否有一些内部逻辑为背景渲染器提供了不同的区域?我关闭了边框渲染器(用无用的功能覆盖). 解决方案 我看不到它,但可以想象这是一个问题.覆盖渲染器,因此它使用相同的背景渲染器作为菜单项和工具分项: Public Class Form1 Public Sub New() Init
2 2024-01-07
编程技术问答社区
在.net, winforms中获得一个工具条项的所有者工具条的正确方法
我发现,在尝试找到项目的所有工具条时,这并不容易,因为只看了该项目的所有者.以下是一些我认为应该有效的伪代码.谁能看到此问题或在所有情况下都应该有效吗? (1)是项目的类型.所有者工具条? (2)是,返回项目.所有者 (3)否,item = item.owneritem.转到(1). eta: 我想让测试成为一般测试.因此,我应该测试工具条,menustrip,StatusStrip或ContextMenustrip. ,而不是测试工具条. 是什么使上面提到的4个与其他工具条派生的控件不同,例如woolstripdropdown,woolstripdropdownmenu和woolstripoverflow? eta2:忽略,绝对鲤鱼! 我可以说,这与control.toplevelcontrol有关.上面的3个控件无法添加到表单中,返回自己的toplevelControl.在添加到表单之前,在添加表单之前,4个有效的控件不返回topleve
2 2024-01-06
编程技术问答社区
改变动态添加的ToolStripPanel溢出行为
我有一个Windows表单Toolstrippanel,我向其动态添加了新的工具包.每个工具条都有我动态添加到它的工具条(主要是工具striptons). ,只要您可以看到每个工具条中的所有工具条,我想将所有工具包放在一行上.如果在工具条中添加新的工具条将导致溢出发生,我希望该行末尾的工具条跳到新行.我唯一想查看溢出按钮的时间是,工具条是否具有太多的项目,以至于无法放在表单的宽度上. 我希望这是默认行为,除非用户手动移动工具条.如果用户移动了工具条,那么我希望发生现有的溢出(例如,下拉选择)行为.我认为,如果用户将工具栏本身定位,则可以使用此默认的Winforms溢出行为. 如果在用户重新定位事物之后添加了新的动态工具栏,我希望将新工具栏添加到底部的最后一个工具条的右侧.该工具栏应具有更新的溢出行为(例如,如果不适合使用新行),直到用户手动重新定位它. 我已经完成了一些研究,但没有取得巨大成功: 这似乎应该是更改a MSDN文章" 在Windows表单中"
2 2024-01-06
编程技术问答社区
如何为ToolStripTextBox添加占位符文本?
在Winforms项目中,我知道如何将占位符文本添加到常规文本框中.但是ToolStripTextBox似乎并不是常规的文本框.首先,它不会暴露手柄(这是通过Win API设置占位符文本所需的). 那么,如何在woolstriptextbox上设置占位符文本,或者获取其.handle属性? 解决方案 ToolStripTextBox主持A 从TextBox派生的内部,您可以使用其 TextBox 或它的 Control 属性.因此您可以编写这样的代码: using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; [ToolboxBitmap(typeof(ToolStripTextBox))] public class MyToolStripTextBox : ToolStripTextBox { private c
2 2024-01-06
编程技术问答社区
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
编程技术问答社区
为什么toolstriplabel的背景色属性在设计时或运行时都不会改变?
我需要有一个工具条标签,并且在运行时会更改其背部颜色,但是无论我做什么.即使他们提供了更改后彩色的选项,它也不会改变其后色.为什么在运行时或设计时间内如何更改其背色属性? 预先感谢 解决方案 这受工具条的Rendermode设置的影响.只有当您将其更改为系统时,BackColor属性才会产生效果.其他渲染器使用主题颜色.您可能不会非常喜欢系统,但是您可以通过实施自己的渲染器来蛋糕和吃蛋糕.使其看起来与此相似: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.toolStrip1.Renderer = new MyRenderer(); } private class MyRenderer : ToolStripProfessionalRenderer { protected overr
2 2024-01-06
编程技术问答社区
在非聚焦的ToolStripItem上显示一个工具提示
toolstripitems在鼠标上时会显示出主动的突出显示,即使它们所处的形式没有焦点.但是,除非将表格集中到,否则他们不会显示其工具提示.我已经看过 toolstrip'click-toolstrip'click-tool'hack'hack .任何人都知道如何使工具键盘显示其父母表格不在焦点时显示其工具提示? 谢谢! 解决方案 问题是工具条"控制",例如toolstripton或toolstripdropdownbutton button not control.目前,每当用户徘徊在按钮上时,我通过将工具分组聚焦来解决问题.按钮的鼠标事件为时已晚 - 在运行" Show Tooltip"代码之后,我扩展了ToolStripdropDownButton类并使用了新按钮.此方法应适用于从woolstripitem 继承的其他任何类似按钮的类别 public class ToolStripDropDownEx : ToolStripDropDownButton {
4 2024-01-05
编程技术问答社区
如何删除ToolStrip Winforms控件角落里的这个奇怪的视觉伪影?
这是显示问题的图片.看看右下角. 有人知道如何摆脱它吗? 设置LayoutStyle VerticalStackWithOverflow修复它,但也将我不想要的物品集中. 我只想要图片中的垂直堆栈,但右下角没有那条黑线. 解决方案 在属性栏中,将" Rendermode"设置为"系统"或使用 .RenderMode = System.Windows.Forms.ToolStripRenderMode.System; 这样做会将.backcolor更改为"控制",但是如果需要,您可以在此之后更改. 其他解决方案 很抱歉参加聚会迟到,但是公认的答案对我的需要不起作用.以下解决方案是我想到的: 摆脱黑线 1)创建一个自定义渲染器: class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer { protected override voi
4 2024-01-05
编程技术问答社区
文字太长时,StatusStrip标签不可见
i有一个StatusStrip停靠到c#表单的底部,它包含一个标签,其文本显示良好,除非有更长的文本,否则它根本不显示,我必须扩大形式,然后突然出现.是否可以以下面的形式显示它: This is a very long tex... 使用户知道该应用程序正在显示某些内容,然后他可以自己扩大它,因为当它根本不可见时,它不会向用户指示任何内容. 解决方案 您可以基于 ToolStripProfessionalRenderer 和Override public class CustomRenderer : ToolStripProfessionalRenderer { protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) { if (e.Item is ToolStripStatusLabel) TextRenderer.DrawText(e.Graphics, e.T
40 2024-01-05
编程技术问答社区
.NET在单个ContextMenuItem中的多个ToolStripButtons
我正在尝试创建一个菜单中的某些项目以上的项目中的某些项目.您可以将其视为试图组合工具条和上下文MENUITEM. 我已经尝试使用工具孔控制,但这会引起焦点问题.它基本上要求您单击两次工具条中的所有内容. ContextMenuStrip m = new ContextMenuStrip(); ToolStrip tStrip = new ToolStrip(new ToolStripDropDownButton(), new ToolStripButton()); ToolStripControlHost tsHost = new ToolStripControlHost(tStrip); m.Items.Add(tsHost); 关于如何实现这一目标的任何想法? 解决方案 上下文Menustrip对不像上下文菜单的自定义弹出窗口的目标太吸引人了.它是理想的,因为当用户单击菜单外时,它会自动弹出.但是它有局限性,它不是一个很好的控制主机.单击问题是经典的,CMS捕获了鼠
2 2024-01-04
编程技术问答社区
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
编程技术问答社区
C# ToolStrip是透明的,但边框仍然可见?
我在C#应用程序中有一个工具条,我将背景颜色设置为透明.这揭示了基本形式的颜色,但不幸的是,工具条边框仍然可见. 我已经实现了一个自定义渲染器,并覆盖了抽签器方法不绘制任何内容,但似乎也适用于所有包含的按钮(即,在没有边框的情况下也绘制了下拉按钮上的菜单). 所以我被卡住了.绘制透明整个工具条的最佳方法是什么? 解决方案 protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) { if( e.ToolStrip.GetType().Name != "MyCustomToolStrip" ) { base.OnRenderToolStripBorder(e); } } 其他解决方案 我尝试过覆盖OnrenderToolStripborder方法,并且似乎根本不会影响按钮.您是否尝试过? public class TestSt
8 2024-01-04
编程技术问答社区
ToolStrip的RenderMode属性是怎么回事?
我从来没有完全理解该属性的设计目的.我可以看到它明显地改变了工具条的设计,并且发现将其设置为Windows XP上的系统使其与Winforms样式更合适. 这里有更深的含义吗?是否完全更改控件的方式,您建议使用哪种模式? 谢谢. 解决方案 RenderMode属性允许开发人员精确控制工具条(或ContextMenu)的显示.当您将RenderMode设置为MANAKERRENDERMODE时,您可以创建一个自定义渲染器,该渲染器将允许您自定义工具分布的外观.例如,下面的代码绘制灰色梯度作为当前在其上面包含鼠标的contextMenu中的项目的背景. Class CustomProfessionalRenderer Inherits ToolStripProfessionalRenderer Protected Overrides Sub OnRenderMenuItemBackground(ByVal e As ToolStripItemRende
2 2024-01-04
编程技术问答社区
我如何对ToolStripStatusLabel进行跨线程调用?
我倾向于在我的大多数应用程序的底部使用StatusStrip来进行简单的状态更新,偶尔是一个进度栏. 然而,似乎工具statuslabels并未从控制中继承,因此它们没有.In.invoke或.invokerequired.那么,我将如何打电话来更改其文本属性? 后代和其他正在搜索的其他编码答案: Action test=(text) => { if (this._statusStrip.InvokeRequired) this._statusStrip.Invoke( new MethodInvoker(() => this._lblStatus.Text = text)); else this._lblStatus.Text = text; }; 或 private void TestInvoker(
8 2024-01-04
编程技术问答社区
工具条有时对鼠标点击没有反应
我有一个.NET 2.0 Winforms应用程序,并在我的主表单上具有工具分.有时,工具条图标不会响应第一个鼠标单击,因此我必须两次单击图标.这只是一个标准的工具条,上面有几个图标和工具提示文本,我没有做任何特别的事情.这是常见的吗? 解决方案 如果应用程序窗口没有焦点,则必须单击两次工具分按钮.第一个点击将焦点设置为窗口,第二个点击将启动点击事件.这是(不幸的是)默认行为,并且是设计. Microsoft Word显示了相同的行为(即使.NET工具条不是相同的控件). 其他解决方案 我有时遇到了同样的问题,我在里克·布鲁斯特(Rick Brewster)的博客,引用此链接.这个想法是在派生的类ToolStripex中覆盖" wndproc".该解决方案的核心看起来像这样: protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == Nati
8 2024-01-03
编程技术问答社区
禁用按钮的鼠标捕捉功能
我用Button创建自定义ContextMenuStrip: ContextMenuStrip _contextMenu = new ContextMenuStrip(); _contextMenu.Items.Add(new ToolStripMenuItem("Item")); _contextMenu.Items.Add(new ToolStripControlHost(new Button())); 当我打开此上下文菜单并将鼠标移到"项目"上时,它将突出显示.但是,在我单击Button之后,然后再次将鼠标移到"项目"上,它不再突出显示了.看起来Button捕获鼠标.在Button点击之后,我如何避免使用或释放​​捕获? 解决方案 您可以创建自己的按钮类,从Button>>>> ControlStyles.Selectable到false,这将阻止其焦点: public class MyButton : Button { public MyButto
12 2023-12-10
编程技术问答社区