2013-07-08 4 views
1

양식 응용 프로그램에서 임의의 클릭 가능한 레이블을 만들고 싶습니다. 무작위로 레이블을 생성했지만 클릭 할 수는 없습니다. 어떤 몸이라도 나를 도울 수 있습니까?클릭 가능한 레이블을 만드는 방법

+1

버튼을 사용할 때 어떤 문제가 발생합니까? – bgs

+1

http://stackoverflow.com/questions/6293588/how-to-create-an-html-checkbox-with-a-clickable-label 이것은 당신을 도울 수 있습니다 – Alex

+0

플랫 버튼 스타일을 알고 있습니까? (평평한 모양의 단추 인 경우) – Sayse

답변

31

당신은 정상으로 Click 이벤트에 연결할 수 있습니다 :

using System.Windows.Forms; 

class Test 
{ 
    static void Main() 
    { 
     Label label = new Label { Text = "Click me" }; 
     label.Click += delegate { label.Text = "Clicked"; }; 
     Application.Run(new Form { Controls = { label } }); 
    } 
} 

그래도 조금 이상한 - 라벨 분명히 클릭 할 수 없습니다.

+3

부활절 달걀은 분명히 ... – synhershko

+0

접근성 문제를 해결하기 위해 라벨을 클릭 할 수있는 것은 분명하지 않습니다. 그들은 웹 개발에서 클릭 가능한 객체로 광범위하게 사용됩니다. 우리는 커서가 더 명확하게 보이도록 포인터를 스타일링하는 경향이 있습니다. –

7

Jon Skeet은 라벨을 동적으로 추가하는 방법에 대한 훌륭한 답을 제공하므로 임의의 구성 요소를 추가합니다.

using System.Windows.Forms; 

class Program 
{ 
    private static Random Random = new Random(); 

    static void Main() 
    { 
     var label = new Label { Text = "Click me!" }; 
     label.Click += delegate { RandomizeLocation(label); }; 

     EventHandler Load = delegate { 
      RandomizeLocation(label); 
     }; 

     var form = new Form { Controls = { label } }; 
     form.Load += Load; 

     Application.Run(form); 
    } 

    private static void RandomizeLocation(Control control) 
    { 
     var maxWidth = control.Parent.Width - control.Width; 
     var maxHeight = control.Parent.Height - control.Height; 
     var x = Random.Next(maxWidth); 
     var y = Random.Next(maxHeight); 

     control.Location = new Point(x, y); 
    } 
} 
관련 문제