2015-01-07 2 views
4

this page 찾았는데, MenuStrip 및 해당 항목의 렌더링을 변경하는 방법을 설명합니다.WinForms 단추 강조 표시 색 변경

나는 이것을 사용하고 싶지만, 버튼 위로 마우스를 가져 가면 강조 색상이 일치하지 않는 것이 문제입니다.

강조 색상을 파란색에서 노란색으로 변경할 수있는 방법이 있습니까? MouseHover 및 MouseLeave 이벤트를 사용해 보았습니다. 그러나 어떤 이유로 느리게 움직이며 단추 모양이 단색으로 바뀌었지만 모양이 바뀌지 않지만 단추의 가장자리에는 테두리가 남지 않습니다. . 코드에서 다음

this.ButtonName.MouseHover += new System.EventHandler(button_mousehover); 

그리고 : 디자이너에서

링크에 뭔가 다른 파란색에서 강조 색상을 변경하려면 위의 게시 된

private void button_mousehover(object sender, EventArgs e) 
{ 
    Button btn = sender as Button; 
    btn.BackColor = Color.Yellow; 
} 

쉽게 같은 일이 있나요 ?

private void myForm Load(object sender, EventArgs e) 
{ 
    myMenuStrip.Renderer = new MenuRenderer(); 
{ 

private class MenuRenderer : ToolStripProfessionalRenderer 
{ 
    public MenuRenderer() : base(new MyColors()) { } 
} 

private class MyColors : ProfessionalColorTable 
{ 
    public override Color MenuItemSelectedGradientBegin 
    { 
     get { return Color.Orange; } 
    } 
    public override Color MenuItemSelectedGradientEnd 
    { 
     get { return Color.Yellow; } 
    } 
    public override Color MenuItemPressedGradientBegin 
    { 
     get{ return Color.Yellow; } 
    } 
    public override Color MenuItemPressedGradientEnd 
    { 
     get { return Color.Orange; } 
    } 
    public override Color MenuItemSelected 
    { 
     get { return Color.Gold; } 
    } 
} 

그래서 그것은 공중 선회 오버 메뉴 항목 오렌지 - 노란색 그라데이션하기 위해, 노랑으로 변경의 배경을 변경할 수 있습니다 : 여기

메뉴 스트립의 렌더링을 변경하는 코드이다 주황색 그라디언트를 클릭하면 메뉴의 모든 항목이 호버링에 금색으로 강조 표시됩니다.

내가하려는 것은 내 양식의 버튼에 대한 마지막 부분 (금색/노란색으로 강조 표시 변경)입니다.

+0

MenuStrip 항목의 렌더링을 변경하기위한 코드를 게시 할 수 있습니까? – Tomer

+0

물론, 한 순간, 나는 그것을 주석으로 편집 할 것입니다. – electroball09

+0

기다려, 당신은 당신이보기를 기대하는 것을 보지 못했습니까? – Tomer

답변

1

Button Renderer을 살펴볼 수 있습니다.

this.someButtonName.MouseHover += (s,e) => 
{ 
    this.someButtonName.BackColor = Color.Yellow; 
}; 

을 당신이 그것을 초기 색상 때이의에 마우스 버튼을 재설정하기 위해 너무두고 사용하는 것이 좋습니다 :

왜 당신은 단순히 너무처럼 MouseHover 이벤트를 구독 할 수 있습니다 때 렌더러를 무시 싶어 당신의 마우스가 더이상 그 위에 있지 않습니다.

+1

그래, 내가 해냈어.하지만 A) 어떤 이유로 천천히 (BackColor를 바꾸는데 약 0.5 초가 걸렸다.) 그리고 B) 경계선을 제외하고 버튼을 채운다. 아주 좋아 보이지 않는다. – electroball09

+0

나는 그것이 최선의 결과를주지 않는다는 것에 동의한다. 테두리 색과 같은 다른 속성을 변경하려고 시도 했습니까? – phadaphunk

+0

좋아요, 흥미 롭습니다. 속성을 살펴본 결과 FlatAppearance 아래에 속성 모음이 있다는 것을 알았습니다. 그 중 하나는 바로 배경을 상당히 바꿀 수있는 MouseOverBackColor입니다 (여전히 단색 임에도 불구하고 색상)이지만 FlatStyle을 Flat 또는 Popup으로 변경하는 경우에만 작동합니다. – electroball09

0

모양 : FlatStyle 아래의 버튼 속성 :
에서 "Flat"을 선택하십시오.
그런 다음 모양/FlatAppearance/MouseOverBackColor에서 원하는 강조 색상을 선택하십시오.