두 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;
}
데이터 가져 오기 form1
및form3
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();
}