C# WinForms에서는 사용자 정의 컨트롤을 만들었습니다.이 예제에서는 버튼을 만든 후 클릭 할 때 이벤트를 트리거한다고 가정합시다.현재 클래스에서 벗어난 이벤트를 트리거하는 방법은 무엇입니까?
이 사용자 정의 컨트롤을 현재 양식에 실시간으로 추가합니다. 문제. 단추 (사용자 정의 컨트롤 안에 있음)를 클릭하면 현재 폼에서 이벤트를 업데이트하는 방법을 알 수 없습니다. 누구나 달성 할 수있는 방법을 알고 있습니까?
C# WinForms에서는 사용자 정의 컨트롤을 만들었습니다.이 예제에서는 버튼을 만든 후 클릭 할 때 이벤트를 트리거한다고 가정합시다.현재 클래스에서 벗어난 이벤트를 트리거하는 방법은 무엇입니까?
이 사용자 정의 컨트롤을 현재 양식에 실시간으로 추가합니다. 문제. 단추 (사용자 정의 컨트롤 안에 있음)를 클릭하면 현재 폼에서 이벤트를 업데이트하는 방법을 알 수 없습니다. 누구나 달성 할 수있는 방법을 알고 있습니까?
답변을 제공하는 것은 이번이 처음이므로 올바르게 처리하고 싶습니다. 다른 모든 대답은 도움이되었지만 막연한 질문 이었을지 모릅니다. 가능한 한 솔루션을보다 명확하게 제공하려고 노력했습니다. 무엇인가 잘못 되었다면 그것을 개선하고, 그것이 '받아 들여지는'것으로 표시되어야하는지 말해주십시오. 여러분 모두를 도와 주셔서 감사합니다!
는첫째, UserControl을에서 나는 버튼을 생성하고 Button1Click이라 그것에 위임 :
나중에 UserControl을의 소스this.button1.Location = new System.Drawing.Point(25, 17);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(95, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Click";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1Click);
:
void Button1Click(object sender, EventArgs e)
{
}
이제, MainForm 디자이너, 나는 추가 TextBox (결과를 테스트하기 위해)와 내 사용자 정의 UserControl. 마지막 줄에, 나는 UserControl에서 이벤트를보고이 실행되는 경우 그것은 MainForm 내부에서 Button1Click이라를 호출
this.textBox1.Location = new System.Drawing.Point(12, 151);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(202, 20);
this.textBox1.TabIndex = 1;
this.uControl1.Location = new System.Drawing.Point(12, 12);
this.uControl1.Name = "uControl1";
this.uControl1.Size = new System.Drawing.Size(304, 95);
this.uControl1.TabIndex = 0;
this.uControl1.button1.Click += new System.EventHandler(this.Button1Click);
는 따라서 텍스트 속성이 변경됩니다.
void Button1Click(object sender, EventArgs e)
{
this.textBox1.Text = "Hurrah!";
}
이벤트를 제기 할 필요는 없습니다 (최소한 제공된 질문에 따라), 이벤트 발생시 실행되는 모든 코드를 public
함수에 넣고 "외부"에서 그냥 넣으면됩니다. 그 함수를 호출하십시오.
사용자 정의 컨트롤에 ButtonClicked라는 사용자 지정 이벤트를 추가하고 단추를 클릭 할 때 실행하고 사용자 정의 컨트롤의 ButtonClicked 이벤트를 처리하기 위해 이벤트 처리기를 폼에 추가하십시오.
기본적으로 usercontrol 관점에서 외부 세계에 이벤트를 노출하고 있습니다.
에 의한 경우 당신은 당신이에 가입하는 방법을 의미하는 경우을 업데이트하는 방법을 모르는 당신이 아니라 시간을 종로보다하고 에 의해 런타임에 그것을 추가 의미 실시간이 사용자 지정 사용자 컨트롤을 추가 이벤트 :
Event
을 사용자 정의 컨트롤 (예 : YourEvent
)에 새로 만들고 YourEvent
을 올리면 버튼 클릭을 처리합니다.
Form
에서 해당 이벤트를 구독하려면 +=
을 사용하십시오.
yourControl.YourEvent += YourEventHandler;
난 당신이 그래서 그냥 yourControl.YourEvent +=
를 입력하고 TAB 두 번 눌러 및 Visual Studio는 당신을위한 적절한 이벤트 처리기 메서드를 생성합니다, 비주얼 스튜디오를 사용 같아요.
@downvoter : reason? – Tigran
이것이 내가하는 일이기도하다. – Sayse