button1_click ()에서 button2_click ()에서 정보 얻기
문제
나는 C#을 처음 접했다. 2 개의 버튼이있는 하나의 윈성이 있습니다. button1_click ()는 일부 데이터를 생성합니다. data1, data2, data3, data4. 이제이 데이터를 button2_click ()에서 사용하고 싶습니다.
private void button1_click(object sender, EventArgs e)
{
//generate data1, data2, data3, data4..
}
private void button2_click(object sender, EventArgs e)
{
//do processing using data1, data2, data3, data4..
}
파일 등을 사용하지 않고 C#에서 비교적 간단해야한다고 가정합니다. 나는 짝수에서 파생 된 사용자 정의 클래스를 사용하여 인수를 전달할 수 있다는 것을 이해하지만, 데이터를 전달하기 전에 먼저 데이터를 유지해야합니다.
해결책
이를 수행하는 Easies 방법은이 두 버튼을 포함하는 양식에 상태를 추가하는 것입니다 (동일한 형식에 있다고 가정합니다).
따라서 게시 된 방법이있는 동일한 클래스에서 회원을 추가해야합니다.
class MyForm : Form
{
MyType data1;
MyType data2;
private void button1_click(object sender, EventArgs e)
{
//generate data1, data2, data3, data4.. <-- here you just set the state of the Form
}
private void button2_click(object sender, EventArgs e)
{
//do processing using data1, data2, data3, data4.. <-- here you use the state set by button 1
}
}
다른 팁
Data1 등에 대한 개인 필드를 만들고 button1_click
그들이 설정되면 현재 인스턴스를 통해 사용할 수 있습니다. button2_click
.
필드는 객체 인스턴스의 일부입니다 공유 상태. 즉, 인스턴스 필드 (정적으로 표시되지 않고 현재 유형의 본문 내에서 선언 된 필드)는 모든 인스턴스 방법 (정적으로 표시되지 않고 현재 유형의 본문 내에서 선언 된 메소드)에서 사용할 수 있습니다. . 두 버튼 클릭 클릭 이벤트 핸들러는 인스턴스 방법이므로 필드에 액세스 할 수 있습니다.
다음과 같은 것을 시도하십시오.
class Foo
{
// These are the fields
Object data1;
Object data2;
Object data3;
Object data4;
void button1_click(object sender, EventArgs e)
{
this.data1 = generateData1();
this.data2 = generateData2();
this.data3 = generateData3();
this.data4 = generateData4();
}
void button2_click(object sender, EventArgs e)
{
// In this method you can access this.data1 etc. since
// they are instance fields
}
}
클래스 필드를 사용할 수 있습니다.
private string data1 = "";
private string data2 = "";
private string data3 = "";
private void button1_click(object sender, EventArgs e)
{
data1 = "some data for field1";
data2 = "some data for field2";
data3 = "some data for field3";
}
private void button2_click(object sender, EventArgs e)
{
// use data1, data2, ... here:
MessageBox.Show(data1 + data2 + data3);
}
예시:
public class MyForm : Form {
private string _data1;
private void button1_click(object sender, EventArgs e) {
_data1 = "hello";
}
private void button2_click(object sender, EventArgs e) {
MessageBox.Show(_data1);
}
}
제휴하지 않습니다 StackOverflow