이것은 최선의 방법은 아니지만 여전히 선택 사항입니다. 양식 KeyPreview
을 true로 설정하고 KeyDown
키 이벤트 핸들러를 양식에 추가하고 Click
이벤트 핸들러를 라벨에 추가하십시오. 클릭 이벤트 핸들러에서 bool을 true로 설정하십시오. keydown 핸들러 내부에서 bool이 true 인 경우 레이블 Text
속성에 눌린 키를 추가하는 if 문을 사용합니다. 그러면 사용자가 레이블을 클릭 한 다음 입력 한 내용이 레이블로 이동합니다. 내 끔찍한 설명
예제 코드 :
public static Form f1 = new Form();
public static Label l1 = new Label();
public static bool isLabelClicked = false;
그런 다음 어떤 방법이를 넣어 양식의 속성을 설정하고 그 개체를합니다. 거짓 이후 그래서 didn를
public static void l1_Clicked(object sender, EventArgs e)
{
isLabelClicked = true;
}
public static void f1_keydown(object sender, KeyEventArgs e)
{
if (isLabelClicked == true)
{
if (e.KeyCode == Keys.A)
{
l1.Text += "a";
}
else if (e.KeyCode == Keys.B)
{
//Etc. For each key
}
}
}
그것은 가장 효율적인 방법은 그것을 할 수 없습니다 그리고 당신은 부울을 만들 수있는 방법을 설정해야 할 것
f1.KeyPreview = true;
l1.Click += new EventHandler (l1_Clicked);
f1.KeyDown += new KeyEventHandler (f1_keydown);
그런 다음 '프로젝트에서 이러한 두 가지 방법이 타이핑 할 때마다 레이블 값을 계속 변경해도 효과가 있습니다.
자이언트 if, else if 블록을 작성하지 않고 각각의 다른 키를 처리하는 더 쉬운 방법이 있습니다. "," "Oemcomma"가 될 수 있기 때문에 KeyCode를 변환하는 것만 큼 피곤할 수 있습니다. 귀하의 코딩과 행운을 빌어 요 :)
레이블은 입력 용으로 사용되지 않습니다. 텍스트 상자를 사용하고 텍스트 필드를 레이블 텍스트에 바인딩 할 수 있습니다. –
레이블에 편집 기능을 수행하기 위해 컨텍스트 메모를 구현하려고합니다. 그런 다음 텍스트 상자를 팝업하여 레이블에 지정할 수 있습니까? – blackfury
'single/double click'에서'label'을'textbox'로 변경할 수 있습니다. – Taleeb