2012-03-22 2 views
0

좋아요. 나는 아직도이 사실을 알고 있습니다. 나는 구글을 가지고 있으며, 몇 가지 조사를 해봤지만 찾고있는 것을 찾지 못했습니다. 이것은 내가하려고하는 것입니다. 표시되는 상태 표시 줄을 추가하십시오 백그라운드의 현재의 색 이것은 사용자가 배경색을 변경 한 방법 (상황에 맞는 메뉴, 메뉴 막대, 단추)에 관계없이 업데이트되어야합니다.색상을 바로 변경

이미 상태 표시 줄을 추가했습니다. 그러나 색상이있는 버튼을 클릭하거나 컨텍스트 메뉴를 사용할 때 표시 방법을 모르겠습니다. 따라서 상태 표시 줄을 사용하여 공개 클래스를 변경하거나 변경하려면 해당 코드를 하나씩 사용해야합니다. 나는이해야 할 일

난 당신이 바닥에 보면이 빨간색 배경을 말 ...의 이미지를 업로드 할 enter image description here

을 갈거야 그리고 그것은 또한 빨간색으로 강조 표시됩니다. 음, 파란색이나 녹색을 클릭하면 전환해야합니다. 이를 수행하는 가장 좋은 방법은 무엇입니까?

private void toolStripButton1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Red; 

    } 

    private void toolStripButton2_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Green; 
    } 

    private void toolStripButton3_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Blue; 
    } 

이 코드는 내 상황에 맞는 메뉴에서입니다 : 내가 지금 상태 표시 줄을 알아 내려고 노력하고 있어요

private void redToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Red; 
    } 

    private void greenToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Green; 
    } 

    private void blueToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Blue; 
    } 

이것은 ToolStrip에서 내 코드입니다.

편집 내가해야 할 일을 파악합니다. 양식 페이지로 돌아가 툴팁을 편집해야했습니다. 도움 남자와 여자들을 보내 주셔서 감사합니다.

+0

공유 우리와 몇 가지 코드를 할 수 있습니다 – Stormenet

+0

)이 숙제는 바로입니까? – gbianchi

답변

1

가장 좋은 해결책은 기본 양식의 배경색 변경에 대응하는 것입니다. BackColorChanged 이벤트를 처리하거나 기본 폼 클래스에서 OnBackColorChanged 보호 된 메서드를 재정 의하여이 작업을 수행 할 수 있습니다.

2

모든 버튼이 동일한 이벤트를 사용하도록합니다. 그런 다음 발신자를 확인하십시오.

private void ColorButtons_Click(object sender, EventArgs e) 
{ 
    Control item = (Control)sender; 

    if(item.tag == "greenColor") 
     this.BackColor = Color.Green; 
    else if(item.tag == "blueColor") 
     this.BackColor = Color.Blue; 
    // and so on 
} 
+0

버튼이 상단에 이미 그곳에 색상이 있습니다. 그렇다면 새로운 비공개 무효 이벤트를 만들어야합니까? – shan

+0

내 대답을 편집했습니다. 다시 읽으십시오. 해당 코드를 양식에 추가 한 다음 각 단추를 선택하고 해당 이벤트를 사용하십시오. 또한 버튼의 이름에 "greenButton, blueButton"등을 추가하십시오. – farooq

+0

나는 이것을 downvote하지 않겠지 만,이 솔루션은 20 가지 색상을 위해해야한다면 나쁘다. 또한 이름은 어떤 방식 으로든 관련이 없어야한다. 어쩌면 컨트롤의 tag 속성을 사용하고 있을까? 또는 더 나은, 그냥 그것의 배경색을 선택;) – gbianchi

1

당신은 색상을 변경하는 방법을 사용할 수 있으며,이 방법, 당신의 상태 표시 줄의 텍스트 및/또는 색상을 설정 : 당신이 greenButton를 할당하면 버튼에 blueButton 등 태그 당신은이를 사용할 수 있습니다 .

그래서 대신

this.BackColor = System.Drawing.Color.Blue; 

(예를 들어)를 설정하면

this.SetColor(System.Drawing.Color.Blue); 

SetColor(Color), 당신은 텍스트 변경 처리를 호출 할 것입니다.

는 예를 들어, 당신은이 방법을 사용할 수 있습니다 : 당신이 입력해도

private void SetColor(System.Drawing.Color c) 
{ 
    this.BackColor = c; 
    this.toolStripStatusLabel1.Text = c.Name; 
} 
1

이 (다른 답변이 더 나은 방법이) 지금 rigth 좋은 방법을 사용되지 않습니다, 당신은 쉽게 해결할 수 있습니다. 상태 표시 줄 내부에서 컨트롤의 배경색을 변경하려면 다음과 같이 여러 위치에서 수행 할 수 있습니다.

색상을 받고 변경하는 기능을 변경할 수 있습니다. 귀하의 예에서 스트립 바에있는 레이블은 빨간색이고 이미 디자이너에서 레이블을 변경합니다. 글쎄, 런타임에 당신도 코드를 사용하여 동일하게 할 수 있습니다;). 레이블에는 이름이 있습니다.다음과 같은 함수를 추가하십시오.

private void ChangeColor(mycolor as System.Drawing.Color) 
{ 
    yourlabelcontrol.BackColor = mycolor; 
    yourlabelcontrol.Text = mycolor.Name; 
} 

또한 색상을 변경하는 모든 작업에서이 작업을 실행할 수 있습니다.

당신은 모든의 색상을 변경 한 기능이 (이것처럼,하지만 모든게에 대한 색상 변경)

관련 문제