2016-07-13 2 views
1

내 버튼의 색상을 바꿔야하는 코드는 다음과 같습니다. 그러나 작동하지 않고 잘못된 것이 무엇인지 전혀 알지 못합니다.사용자 정의 방법을 통해 버튼의 뒷면 색상을 변경할 수 없음

Public Sub color(ByVal backcolor As System.Drawing.Color) 
    backcolor = Drawing.Color.CadetBlue 
End Sub 

그리고 버튼을 클릭했을 때 어떻게 호출할까요? 다시 색을 Button1으로 변경해야하지만 그렇지 않습니다. 나는 그것을 올바르게하고 있는가, 또는 나는 무엇인가 놓치고 있는가?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    color(Button1.BackColor) 
End Sub 

답변

1
Public Sub color(ByVal btn As Control, ByVal clr As System.Drawing.Color) 
    btn.BackColor = clr 
End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    color(Button1, Drawing.Color.CadetBlue) 
End Sub 

또는 작동

Public Sub color(ByVal btn As Control) 
    btn.BackColor = Drawing.Color.CadetBlue 
End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    color(Button1) 
End Sub 

모든 컨트롤 (텍스트 상자, 레이블 등)

+0

사실이 방법이 훨씬 더 좋습니다. 모든 컨트롤에 대해 작동하며 컨트롤의 이름을 전달하는 것은 더 간단합니다. +1 –

+0

나는 당신의 편집을 정말로 이해하지 못합니다. 다른 매개 변수를 추가하는 데 불필요 할 때마다 동일한 백 색으로 변경하려고합니다. 나는 당신이 두 번째 옵션 대신에 코드를 유지하면서 편집을해야한다고 생각한다. –

+0

다른 답변에 대한 자신의 의견을 참조하십시오. 내가 제대로 이해하지 못 했니? 그는 말합니다 :'작동하지만 다른 색상으로 바꿀 수있는 버튼이 많습니다. ' – BanForFun

1

System.Drawing.Color은 값 유형 (구조)입니다. color 메서드에 전달하면 복사본 만 전달되고 메서드는 복사본 만 변경합니다. 당신은 기능에 하위를 변경하고 색상을 반환하고 버튼의 BackColor 속성에 할당해야하는 함수가 값을 추가하지 않습니다

Public Function color() As System.Drawing.Color 
    Return System.Drawing.Color.CadetBlue 
End Function 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Button1.BackColor = color() 
End Sub 

있지만. 당신이 당신의 하위에 ByRef를 사용할 수 @ VisualVincent의 코멘트 당

Button1.BackColor = System.Drawing.Color.CadetBlue 

: 당신은 아마 직접 색상을 설정해야합니다

Private Sub ChangeColor(ByRef c As System.Drawing.Color) 
    c = Color.CadetBlue 
End Sub 
+0

그는 또한'ByRef'를 사용할 수 있습니다. –

+0

@VisualVincent - 고마워, 나는 그 물건에 대해 효과가 있을지 모르겠다. 나는 단지 그것을 테스트하고 있었다! –

+0

@ jacobDenis : 요점은 무엇입니까? 그의 편집은 당신이 원하는대로합니다. –

1

이렇게하려면 확장 방법을 만들 수 있습니다. 다음과 같이 공공 모듈을 만듭니다

Public Module Module1  
    <Runtime.CompilerServices.Extension()> 
    Public Sub SetBackColourToCadetBlue(aButton As Button) 
    'Use the following line for Telerik Button 
    'Public Sub SetBackColourToCadetBlue(aButton As Telerik.WinControls.UI.RadButton) 
     aButton.BackColor = Color.CadetBlue 
    End Sub 
End Module 

를 사용해서 그냥 아무 버튼의 배경색을 설정하려면 다음을 호출 할 수 있습니다

Button1.SetBackColourToCadetBlue() 
+1

더 나은 해결책, IMO! :) –

+0

어떻게이 "btn.BackColor Drawing.Color.CadetBlue ="변경할 수 있습니다 telerik radbutton 설정 –

+0

타사 단추를 사용하는 경우이 부분에있는 'a 단추를 단추로'당신은 '단추'를 변경해야합니다 'Telerik.Button' 또는 그것이 무엇이든간에 - RadButton 일 수 있다고 생각하십시오. –

관련 문제