[c#] 한 양식에서 다른 양식으로 값 보내기

두 Forms (C #)간에 값을 전달하고 싶습니다. 어떻게하니?

Form1과 Form2의 두 가지 양식이 있습니다.

Form1에는 단추가 하나 있습니다. 이 버튼을 클릭하면 Form2가 열리고 Form1은 비활성 모드 (즉, 선택할 수 없음)에 있어야합니다.

Form2에는 하나의 텍스트 상자와 하나의 제출 단추가 있습니다. Form2의 텍스트 상자에 메시지를 입력하고 제출 단추를 클릭하면 Form2가 닫히고 Form1이 제출 된 값으로 강조 표시됩니다.

어떻게하니? 누군가가 간단한 예를 들어 이것을 도와 줄 수 있습니까?



답변

이에 대한 몇 가지 해결책이 있지만 이것이 제가 사용하는 패턴입니다.

// Form 1
// inside the button click event
using(Form2 form2 = new Form2())
{
    if(form2.ShowDialog() == DialogResult.OK)
    {
        someControlOnForm1.Text = form2.TheValue;
    }
}

과…

// Inside Form2
// Create a public property to serve the value
public string TheValue
{
    get { return someTextBoxOnForm2.Text; }
}


답변

private void button1_Click(object sender, EventArgs e)
{
        Form2 frm2 = new Form2(textBox1.Text);
        frm2.Show();
}

 public Form2(string qs)
    {
        InitializeComponent();
        textBox1.Text = qs;

    }


답변

속성 정의

public static class ControlID {
    public static string TextData { get; set; }
}

에서 form2

private void button1_Click(object sender, EventArgs e)
{
    ControlID.TextData = txtTextData.Text;
}

데이터 가져 오기 form1form3

private void button1_Click(object sender, EventArgs e)
{
    string text=  ControlID.TextData;
}


답변

한 양식에서 다른 양식으로 데이터를 전달하기위한 일련의 노력 끝에 마침내 안정적인 답을 찾았습니다. 매력처럼 작동합니다.

여러분이해야 할 일은 변수를 public static datatype 'variableName'한 형태 로 선언하고 다른 형태로 전달할이 변수에 값을 할당하고 형태 이름을 직접 사용하여 다른 형태로이 변수를 호출하는 것 입니다 (이 형태의 객체를 다음과 같이 생성하지 마십시오). 정적 변수에 직접 액세스 할 수 있음 )이 변수 값에 액세스 할 수 있습니다 .

그 예는 다음과 같습니다.

Form1

public static int quantity;
quantity=TextBox1.text; \\Value which you want to pass

Form2

TextBox2.Text=Form1.quantity;\\ Data will be placed in TextBox2


답변

공개 문자열 선언 form1

public string getdata;

의 버튼 form1

form2 frm= new form2();
this.hide();
form2.show();

데이터를 보내려면 form1해당 이벤트에서 다음 이벤트 및 코드를 시도 할 수 있습니다.

form1 frm= new form1();
form1.getdata="some string to be sent to form1";

이제를 닫고 form2연 후에 form1반환 된 데이터를 getdata문자열로 사용할 수 있습니다 .


답변

저는 다양한 winform 프로젝트에서 작업했으며 응용 프로그램이 더 복잡 해짐에 따라 (더 많은 대화와 상호 작용) 창을 수동으로 열고 닫는 작업을 관리하는 것이 어렵 기 때문에 일부 이벤트 시스템을 사용하여 저를 돕기 시작했습니다. 유지하고 더 발전하십시오.

내 응용 프로그램에 CAB 를 사용 했지만 이벤트 시스템이 있지만 귀하의 경우에는 과잉 일 수 있습니다. 🙂 더 간단한 응용 프로그램을 위해 자신의 이벤트작성할 수 있습니다.


답변

form1에서 문자열 선언 public string TextBoxString;

form1 클릭 이벤트 추가

private void button1_Click(object sender, EventArgs e)
    {
        Form1 newform = new Form1();
        newform = this;
        this.Hide();
        MySecform = new Form2(ref newform);
        MySecform.Show();
    }

form2 생성자에서

public Form2(ref Form1 form1handel)
    {
        firstformRef = form1handel;
        InitializeComponent();
    }

form2 상자 변수 Form1 firstformRef에서;

private void Submitt_Click(object sender, EventArgs e)
    {
        firstformRef.TextBoxString = textBox1.Text;
        this.Close();
        firstformRef.Show();

    }