C#和VB有一個很大的區別,VB可以在窗體2直接調用窗體1的控件,但是C#卻不能,可能是出於安全考慮,但同時也給使用帶來了極大的不便。
於是查閱很多資料,加之理解,總結於下:
目的:窗體2取值窗體1控件的內容:
首先,在窗體1定義如下控件屬性:
public FlexCell.Grid Grid //FlexCell是一款收費控件 { get { return this.gd_SPEC;//gd_SPEC是自定義控件名稱 } }
在窗體1事件中,顯示窗體2
private void 參數預覽ToolStripMenuItem_Click(object sender, EventArgs e) { SpecView svForm = new SpecView(this); svForm.ShowDialog(); }
在窗體2中,定義窗體名稱:
private FormMain fm; public SpecView(FormMain f) //FormMain是主窗體,SpecView是副窗體 { InitializeComponent(); fm = f; }
然后就可以直接調用窗體1的控件屬性了,調用方式:
string s =fm.Grid.Cell(2,2).Text; MessageBox.Show(s);
雖然復雜了一點,但是還是能用的,總比設置靜態變量要好用。