.NET의 메뉴와 메뉴의 기본 배경색을 어떻게 변경합니까?
-
03-07-2019 - |
문제
요즘 Visual C# (시각적 C# 2008)을 사용하면 Menustrips and Menus의 기본 색상이 파란색 인 것 같습니다. 나에게는 정말 이상하게 보이며 정말로 재정의하고 싶은 것입니다. 비주얼 스튜디오가 선택한 시스템 테마 나 무언가 에서이 파란색을 선택하고 있다고 생각하지만 내 시스템에서 실행되는 다른 Windows 앱은이 파란색이 없으므로 .NET 앱이 왜 가져야하는지 모르겠습니다. . ;)
어쨌든, 나는 이전 버전의 Visual Studio (Visual Studio.net)를 사용하여 응용 프로그램을 만들면 멘스 립과 메뉴의 기본 배경색이 당신이 볼 수있는 표준 회색임을 알았습니다. 이것은 내가 생각하는 문제에 대한 하나의 해결책이지만, 어리석은 사람처럼 보이며 현재 버전의 Visual C#에서 그것을 무시할 수있는 방법을 찾고 싶습니다.
해결책
dotnet 1.x에는 menustrip이 없었으며 표준 Windows 메뉴를 사용했습니다.
DotNet 버전 2.0 이상은 menustrip을 가지고 있으며 vs 7 이상은 도구 상자에서 메인 메뉴를 제거하고 사무실을 사용하는 Menustrip으로 대체합니다. xp 2003 테마, 따라서 Menustrip 및 Toolstrip의 청색 구성표.
MainMenu는 여전히 표준 Windows 메뉴를 위해 도구 상자에 추가 할 수 있습니다.
다른 팁
설정 "렌더 머드"메래 스립의 옵션"체계""ManagerRenderMode "대신
:)
Menustrip의 뒷면을 설정해 보셨습니까? 다음과 같은 작업을 수행 할 수 있어야합니다.
this.menuStrip1.BackColor = Color.FromKnownColor(KnownColor.Control);
자신만의 렌더러를 만들 수 있습니다
public class BrowserMenuRenderer : ToolStripProfessionalRenderer
{
public BrowserMenuRenderer() : base(new BrowserColors()) {}
}
public class BrowserColors : ProfessionalColorTable
{
public override Color MenuItemSelected
{
get { return Color.FromArgb(30, 30, 30); }
}
public override Color MenuItemBorder
{
get { return Color.FromArgb(30, 30, 30); }
}
public override Color MenuItemSelectedGradientBegin
{
get { return Color.FromArgb(30, 30, 30); }
}
public override Color MenuItemSelectedGradientEnd
{
get { return Color.FromArgb(30, 30, 30); }
}
}
그런 다음 Menustrip의 렌더러를 YourRenderer로 설정했습니다.
렌더 모드를 사용할 수 있지만 시스템 테마를 기본값으로 설정합니다. .NET을 사용하면 백색과 색상을 변경할 수 있지만 그 위에 호버링하면 기본 색상이 표시됩니다. 그녀는 그 주위의 방법 ...
그의 "Dropdownopening", "DropdownClosed"및 "MouseEnter"이벤트를 사용하여 달성하기가 매우 간단합니다.
private void fileToolStripMenuItem_DropDownOpening(object sender, EventArgs e){
// When the user clicks on "File" it will change to red.
fileToolStripMenuItem.ForeColor = Color.Red;
}
private void testToolStripMenuItem_MouseEnter(object sender, EventArgs e){
// When the user hovers over a child of "file" called "test", "file" turns orange.
fileToolStripMenuItem.ForeColor = Color.Orange;
}
private void test2ToolStripMenuItem_MouseEnter(object sender, EventArgs e){
// When the user hovers on a child of "file" called "test2", "file" turns blue.
fileToolStripMenuItem.ForeColor = Color.Blue;
}
private void fileToolStripMenuItem_DropDownClosed(object sender, EventArgs e){
// When the user leaves the "file" menu, it gets restored back to black.
fileToolStripMenuItem.ForeColor = Color.Black;
}