【问题标题】:How to override toolstrip renderer?如何覆盖工具条渲染器?
【发布时间】:2018-06-29 17:26:01
【问题描述】:

我是 Visual Studio 和 C++ 的新手,我创建了一个新的 CLR 空项目并开始添加一些控件。我注意到工具条右边缘有这个奇怪的人工制品,并想将其移除。

这个问题Why am I getting a vertical line on toolstrip? 在 c# 中提供了一个解决方案,但我在尝试使它在 Visual c++ 中工作时遇到了麻烦。

首先我创建了一个名为CustomerRenderer.cpp 的新 .cpp 文件,代码如下所示:

using namespace System::Windows::Forms;

private ref class CustomRenderer : ToolStripRenderer
{
protected:
    virtual void OnRenderToolStripBorder(ToolStripRenderEventArgs^ e) override
    {
        ToolStripRenderer::OnRenderToolStripBorder(e);
    }
};

然后在我的表单加载中我放了这个:

private: System::Void MainForm_Load(System::Object^  sender, System::EventArgs^  e) {
        this->toolStrip1->Renderer = gcnew CustomRenderer();
    }

这只是使工具条完全消失,而不是修复边缘伪影。我喜欢渐变工具条的风格,所以宁愿不改成系统渲染器。

如何在 Visual c++ 项目中覆盖工具条渲染器并移除边缘边框伪影?

谢谢

【问题讨论】:

    标签: winforms visual-studio c++-cli toolstrip


    【解决方案1】:

    好的,我通过更改解决了:

    private ref class CustomRenderer : ToolStripRenderer
    

    private ref class CustomRenderer : ToolStripProfessionalRenderer
    

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 1970-01-01
      • 2017-06-28
      • 2023-03-25
      • 2014-01-31
      • 2012-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多