c\#WinForm 창 사이 의 값 을 전달 하 는 몇 가지 방식(소결)
최근 에 Winfrom 창 을 유지 하고 있 습 니 다.프로젝트 의 CS 엔 드 의 메 인 창 입 니 다.많은 하위 창 은 메 인 창 에서 값 을 받 아야 합 니 다.또한 하위 창 은 메 인 창 에 값 을 되 돌려 주어 야 합 니 다.다음은 소개 하 겠 습 니 다.
본문
본 고 는 메 인 창 체 를 frm Main 로 하고,하위 창 체 는 frm Group 이 며,두 창 사이 의 전 가 를 예 로 들 었 다.
방식 1:공공 정적 변 수 를 사용 하여 값 을 전달 합 니 다.
주 창 frmMain 코드
public partial class frmMain : Form
{
// ID
public static string terminalID = "";
//
terminalID = "q13bh01-bh12";
}
하위 창 frmGroup 코드
private void frmGroup_Load(object sender, EventArgs e)
{
this.txtTerminalID.Text= frmMain.terminalID.Trim();
// ,
frmMain.terminalID = "q13bh01-bh11";
}
특징:양 방향 전송 값,간단 실현단점:정적 변 수 는 클래스 로 딩 할 때 메모 리 를 분배 하고 방법 구역 에 저장 합 니 다.일반적으로 소각 되 지 않 습 니 다.시스템 이 메모리 가 부족 한 상황 에서 정적 메모 리 를 자동 으로 회수 합 니 다.그러면 전체 정적 오 류 를 일 으 킬 수 있 습 니 다.
방식 2:공공 변수 전송 값 사용
주 창 frmMain 코드
public partial class frmMain : Form
{
// ID
public string terminalID = "";
//
terminalID = "q13bh01-bh12";
// ‘ '
private void btnGroup_Click(object sender, EventArgs e)
{
frmGroup frmGro = new frmGroup();
// , ShowDialog()
frmGro .stationID = this.terminalID;
frmGro .ShowDialog();
}
}
하위 창 frmGroup 코드
public partial class frmGroup : Form
{
//
public string stationID = "";
}
특징:단 방향 전송 값,주 창 만 하위 창 에 전달 할 수 있 습 니 다.간단 합 니 다.방식 3:의뢰 전송 치 사용
먼저 하위 창 frmGroup 의 코드 를 보 겠 습 니 다.
namespace Siemens.Simatic.GUIClient.MESClient
{
//1、
public delegate void setTextValue(string textValue,bool flag);
public partial class frmGroup : Form
{
//2、
public event setTextValue setFormTextValue;
public string groupName = "";
public bool flagBtnGroup = false;
public frmGroup()
{
InitializeComponent();
}
// ‘ ' ( )
private void tmrBtn_Tick(object sender, EventArgs e)
{
if (sender is ButtonX) {
ButtonX butX = (ButtonX)sender;// Button
groupName = butX.Text.Trim();
flagBtnGroup = true;
//3、 。
setFormTextValue(this.groupName.Replace(" ", ""), this.flagBtnGroup );
this.Close();
return;
}
}
주 창 frmMain 코드
private void btnGroup_Click(object sender, EventArgs e)
{
frmGroup frmGro = new frmGroup();
//4、
frmGro .setFormTextValue += new setTextValue(frmGro _setFormTextValue);
// , ShowDialog()
frmGro .stationID = this.terminalID;
frmGro .ShowDialog();
}
//5、
public void frmGro _setFormTextValue(string textValue,bool flag)
{
this.newGroupName = textValue;
this.flagBtnGroup = flag;
if (!string.IsNullOrEmpty(newGroupName))
{
……
}
}
특징:하위 창 데 이 터 를 실시 간 으로 부모 창 으로 전송 하기에 적합 합 니 다.방식 4:구조 함수 로 수 치 를 전달 합 니 다.
class FormB
{
int orgId;
public FormB(int orgId)
{
this.orgId=orgId;
}
}
class FormA
{
public void ShowB()
{
FormB fb=new FormB(5); // 5
fb.Show();
}
}
방식 5:A 창 전 체 를 B 창 에 전달 합 니 다.어떤 때 는 B 창 에서 A 창의 특정한 컨트롤 값 을 수정 하고 A 창의 컨트롤 을 즉시 바 꿔 야 합 니 다.이 방법 은 이러한 상황 에 적합 합 니 다.
FormA 를 수정 하고 B 에서 처리 할 컨트롤 의 접근 성(Modifiers)을 Public 로 설정 한 다음 아래 방식 으로 처리 합 니 다.
class FormA
{
public void ShowB()
{
FormB fb=new FormB(this); // A
fb.Show();
}
}
class FormB
{
FormA fm; //B FormA
public FormB(FormA fm) // , FormA
{
this.fm=fm;
}
protected void Method1()
{
fm.txtName.Text="Haha!"; // A !
}
}
두 어 마디 중 얼 거리 다프로젝트 에서 부모 창 이 하위 창 에 값 을 전달 하 는 것 은 고정 값 입 니 다.첫 번 째 방식 을 사 용 했 습 니 다.하위 창 이 부모 창 에 값 을 전달 하 는 것 은 변화 하 는 값 입 니 다.세 번 째 방식 을 사 용 했 고 세 번 째 방식 은 저 에 게 큰 문 제 를 해결 해 주 었 습 니 다.
총결산
읽 어 주 셔 서 감사합니다. 창 전송 값 은 여러 가지 방법 이 있 습 니 다.구조 적 매개 변수 전송 값,공공 속성 전송 값 등 각종 장면 에서 수요 에 맞 는 가장 좋 은 것 을 찾 아 작은 편집 에 소중 한 의견 을 제시 하고 싶 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WinForm Read Excel텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.