为何StatusStrip控件中如果项目数超过了能够显示的项目数,超过的项目会无法显示出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为何StatusStrip控件中如果项目数超过了能够显示的项目数,超过的项目会无法显示出来相关的知识,希望对你有一定的参考价值。

为何StatusStrip控件中如果项目数超过了能够显示的项目数,超过的项目会无法显示出来,如果超过了,能否显示一个滚动条,或则添加一个下拉框控件让用户进行选择

参考技术A StatusStrip没这么厉害啦
自定义一个吧

跨线程操作无效:控件“statusStrip”从创建它的线程以外的线程访问

【中文标题】跨线程操作无效:控件“statusStrip”从创建它的线程以外的线程访问【英文标题】:Cross-thread operation not valid: Control 'statusStrip' accessed from a thread other than the thread it was created on 【发布时间】:2015-05-14 12:49:03 【问题描述】:

我试过这个。 https://***.com/a/142069/2126472

点赞toolStripStatusLabel1.InvokeRequired

但是toolStripStatusLabel1 没有InvokeRequired

我也试过这个。 https://***.com/a/15831292/2126472

它的错误就像无效的参数一样

SetTextCallback d = new SetTextCallback(SetText); form.Invoke(d, new object[] form, ctrl, text );

当我使用 ThreadHelperClass.SetText(this, toolStripStatusLabel1, "This text was set safely.");

但当我使用textBox时不会出错

我的代码有方法等待bool 来自另一个使用线程在后台运行的方法。

Thread t = new Thread(TestRemoteDB);
t.Start();
// In TestRemoteDB() will call updateRemoteDBStatus()

喜欢这个

private void updateRemoteDBStatus(bool successful)
        
            if (successful)
            
                toolStripStatusLabel4.Text = "OK!";
                toolStripStatusLabel4.ForeColor = Color.Green;
            
            else
            
                toolStripStatusLabel4.Text = "Error!";
                toolStripStatusLabel4.ForeColor = Color.Red;
            
        

【问题讨论】:

你能粘贴你的完整代码吗 toolStripStatusLabel in multithreading的可能重复 【参考方案1】:

试试这个:

this.BeginInvoke((Action)(() => toolStripStatusLabel1.Text = "This text was set safely."));

【讨论】:

这行不通,因为 ToolStripStatusLabel 没有 BeginInvoke 方法。即使这样做也没有任何意义,因为 ThreadHelperClass 已经在使用 Invoke 在 UI 线程上执行代码。而且它不会编译,因为 ToolStripStatusLabel 不是控件,因此不能与 OP 链接的 ThreadHelperClass 一起使用。 Lapsus,我的意思是“this”并写了“toolStripStatusLabel”。 Tnx。 我认为这是可行的,并且为我节省了很多代码行。非常感谢@Marko Juvančič。

以上是关于为何StatusStrip控件中如果项目数超过了能够显示的项目数,超过的项目会无法显示出来的主要内容,如果未能解决你的问题,请参考以下文章

StatusStrip控件

跨线程操作无效:控件“statusStrip”从创建它的线程以外的线程访问

C#的winform里statusStrip控件怎么显示系统时间?

在 WinForms 中修改停靠布局

融资超过 650000000 元,Kubernetes 为何倍受青睐?

StatusStrip / StatusBar 文本不可见