문제

나는 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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top