标签: toolstrip

如何对ToolStripStatusLabel进行跨线程调用?

我倾向于在我的大多数应用程序的底部使用StatusStrip进行简单的状态更新,偶尔也会使用进度条.

但是,看起来ToolStripStatusLabels不会从控件继承,因此它们没有.Invoke或.InvokeRequired.那么我如何线程安全地调用来改变它的文本属性呢?

后代和其他搜索的代码答案:

Action<string> test=(text) =>
            {
                if (this._statusStrip.InvokeRequired) this._statusStrip.Invoke(
               new MethodInvoker(() => this._lblStatus.Text = text));
                else this._lblStatus.Text = text;
            };
Run Code Online (Sandbox Code Playgroud)

要么

private void TestInvoker(string text)
    {
        if (this._statusStrip.InvokeRequired) 
            this._statusStrip.Invoke(
                   new MethodInvoker(() => this._lblStatus.Text = text));
        else this._lblStatus.Text = text;
    }
Run Code Online (Sandbox Code Playgroud)

.net multithreading toolstrip

16
推荐指数
1
解决办法
1万
查看次数


如何在ToolStrip Winforms控件的角落删除这个奇怪的视觉神器?

这是显示问题的图片.看看右下角.

谁知道如何摆脱它?

设置LayoutStyleVerticalStackWithOverflow修复它,但也将项目水平居中,这是我不想要的.

我只想要像照片中的垂直堆栈,但右下角没有黑色线条.

在此输入图像描述

.net c# toolstrip styling winforms

13
推荐指数
2
解决办法
6448
查看次数

ToolStrip的RenderMode属性有什么用处?

我从来没有完全理解这个属性的设计目的.我可以看到它明显改变了工具条的设计,我发现在Windows XP上将它设置为System使其更适合WinForms风格.

这里有更深层的含义吗?控件的呈现方式是否会发生变化以及您建议使用哪种模式?

谢谢.

.net toolstrip winforms

10
推荐指数
1
解决办法
7465
查看次数

将StatusStripProgressBar锚定到StatusBar的右侧(StatusStrip)

我有一个状态栏的表单,其中有2 ToolStripStatusLabel秒后跟一个ToolStripProgressBar.我希望进度条始终锚定在状态栏的右侧 - 所以当窗口调整大小/最大化时,它应该自动移动 /重绘.

我认为这就像将1st(左对齐)ToolStripStatusLabelSpring属性设置为true 一样简单,因此当窗体调整大小/增加大小,并且有更多可用空间时,1st ToolStripStatusLabel会填满该空间并自动推送ToolStripProgressBar在右边.

但这不仅没有做我想要的 - 第一个ToolStripStatusLabel实际上覆盖了第二个StatusLabelProgressBar基本占据整个状态栏.ToolStrip控件都没有Anchor甚至MinSize.

那我怎么做:

  1. 锚定在ToolStripProgressBarStatusBar的右侧(StatusStrip)
  2. 将一些固定尺寸的物品(例如ToolStripStatusLabel2ToolStripProgressBar)混合在一起ToolStripStatusLabel1,如果有额外的空间,它会变大吗?

在此先感谢您的时间和帮助!

〜IM

toolstrip winforms

10
推荐指数
4
解决办法
1万
查看次数

ToolStrip圆角

我正在开发一个Windows窗体应用程序(C#,.NET 4.0,VS 2010),其中我有一个非常标准的MainForm,带有ToolStrip(GripStyle:Hidden,Dock:Top,RenderMode:ManagerRenderMode).工具条包含一些基本项(ToolStripLabel,ToolStripSeparator,ToolStripSplitButton).

这呈现如下:

ToolStrip默认呈现为ManagerRenderMode

起初我只是想在工具条下面添加一个"底部"边框,但我也注意到这个工具条是用'圆角'渲染的(你可以在图像中看到右边的顶部和底部),以及垂直渐变线.

我怎样才能让这些角落不圆?

我试过了:

public class MainFormToolStripRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBorder(e);

        var y = e.ToolStrip.Height-1;
        e.Graphics.DrawLine(new Pen(SystemColors.ControlDark, 1), new Point(0, y), new Point(e.ToolStrip.Width, y));
    }
Run Code Online (Sandbox Code Playgroud)

并通过this.toolStrip_Actions.Renderer=new MainFormToolStripRenderer();我的表单初始化连接它.

这给了我底部边框,但没有为圆角做任何事情.此外,添加底部边框,圆角更明显:

ToolStrip由自定义ToolStripProfessionalRenderer呈现

接下来,我尝试在上面的相同事件处理程序中绘制一个矩形,以尝试(至少)隐藏实心矩形边框后面的圆角和垂直渐变.这不起作用,因为可用的绘图区域(e.AffectedBounds)位于圆角边框内.

我还尝试将ToolStrip的RenderMode设置为System(而不是使用我的渲染器).在这种情况下,工具条角似乎适合(矩形),但工具栏中的拆分按钮似乎被打破(单击向下箭头不显示下拉列表),原因尚不明确,整体外观-feel有点平庸(相当平坦,直到你将鼠标悬停在工具条中的某些按钮上).

我想最后我宁愿坚持使用ManageeRenderedMode,也不想继承自Professional的自定义渲染器 - 但我需要摆脱圆角.其中,我发现这个SO Q似乎与我正在看的很接近,但没有给我一个答案.

提前致谢

c# render toolstrip winforms

9
推荐指数
1
解决办法
6704
查看次数

当文本太长时,StatusStrip标签不可见

我有一个StatusStrip停靠在C#表单的底部,它包含一个标签,其中的文本显示正常,除非文本长度较长,然后根本不显示,我必须加宽表格然后全部突然之间出现了.是否可以在下面的表格中显示:

    This is a very long tex...
Run Code Online (Sandbox Code Playgroud)

从而使用户知道应用程序是显示的东西,然后他就可以扩大它自己,因为当它是完全不可见,它并不表示任何用户.

.net c# toolstrip statusbar winforms

9
推荐指数
2
解决办法
2221
查看次数

在非聚焦的ToolStripItem上显示工具提示

当鼠标悬停在它们上时,ToolStripItems显示活动突出显示,即使它们所在的表单不在焦点上.但是,除非表格是重点,否则他们不会显示他们的工具提示.我见过ToolStrip'click-though'hack.任何人都知道如何使ToolStripButton在其父表单不在焦点时显示其工具提示?

谢谢!

.net c# tooltip toolstrip winforms

8
推荐指数
2
解决办法
7755
查看次数

ToolStrip有时不响应鼠标点击

我的主表单上有一个带有ToolStrip的.NET 2.0 WinForms应用程序.有时,ToolStrip图标不会响应第一次鼠标单击,因此我必须单击该图标两次.它只是一个带有几个图标和工具提示文本的标准ToolStrip,我没有做任何特别的事情.这是常见的吗?

.net toolstrip winforms

8
推荐指数
2
解决办法
5021
查看次数

如何使ToolStrip按钮立即可点击而不先点击表格?

我有一个带有包含按钮的工具条的Windows窗体应用程序.令人沮丧的是,我必须在任何按钮上单击两次才能在表单未聚焦时触发它.第一次单击似乎激活表单,然后第二次单击单击按钮(或者,我可以单击表单上的任意位置,然后单击按钮一次).如何修复此问题,即使表单未激活,我也可以直接点击按钮?

编辑:我觉得这应该是可行的,因为它适用于SQL Server Profiler和Visual Studio等程序(不是这些程序使用WinForms,但它表明它不是操作系统问题).

c# focus toolstripbutton toolstrip winforms

8
推荐指数
1
解决办法
4447
查看次数