我有2個表單。表單1是mainForm,表單2是WordSearch。我想將newSystemRec的值從WrodSearch傳遞給mainForm。我的兩個表單都可以訪問datalayer.cs文件。從WordSearch表單中我可以獲取我的newSystemRec值。 這是我的單詞搜索代碼:如何從C中的另一個表單獲取變量的值#
public enum Category { Schematic, Component }
public partial class WordSearch : Form
{
private DataLayer dataLayer;
private MainForm mainForm;
public event EventHandler<JumpToEventArgs> JumpTo;
public event EventHandler ModeChanged;
public event EventHandler SystemChanged;
public event EventHandler<SimEventArgs> SimChanged;
private SystemMode systemMode;
private p2p p2pMode, originalMode;
private Int32 systemRec;
private string fileName;
public Int32 projectRec { get; set; }
public WordSearch(Category category, String title)
{
InitializeComponent();
this.dgSearch.Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center;
this.Icon = Properties.Resources.TDXm;
if (category == Category.Schematic)
SetDefaultCategory(true, false);
else
SetDefaultCategory(false, true);
dataLayer = new DataLayer(false);
rbRefDes.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged);
rbComp.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged);
rbSchematic.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged);
rdoTrace.Click += new EventHandler(this.rbTraceAndSim);
rdoSim.Click += new EventHandler(this.rbTraceAndSim);
lblModel.Text = title;
}
private void WordSearch_FormClosing(object sender, FormClosingEventArgs e)
{
if (fileName == null) return;
if (originalMode != p2pMode)
{
if (ModeChanged != null)
ModeChanged(this, EventArgs.Empty);
}
//Need to pass the value below
Int32 newSystemRec = dataLayer.GetSystemType(fileName, p2pMode);
if (systemRec != newSystemRec)
{
if (SystemChanged != null)
SystemChanged(null, EventArgs.Empty);
}
}
,這是我的MainForm:
public Int32 newSystemRec { get; set; }
public MainForm()
{
InitializeComponent();
InitializeP2Trace();
dataLayer.InsertHandler(this.Handle);
Args = Environment.GetCommandLineArgs();
MethodInvoker mi = new MethodInvoker(EmsJump);
this.dgComp.Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center;
this.dgSchematic.Style.VerticalAlignment = C1.Win.C1TrueDBGrid.AlignVertEnum.Center;
dgSchematic.Splits[0].ColumnCaptionHeight = 28;
dgComp.Splits[0].ColumnCaptionHeight = 28;
xmlPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "temp.xml");
tsMarkup.Location = new Point(355, 0);
if (Args != null)
mi.Invoke();
}
private void wordSearch_SystemChanged(object sender, EventArgs e)
{
//How to get the value of newSystemRec???
Int32 newSystemRec =
newSystemRec--;
Int32 index = newSystemRec;
switch (index)
{
case 1:
systemMode = SystemMode.Hydraulic;
cbSystem.SelectedIndex = 1;
break;
case 0:
default:
systemMode = SystemMode.Electrical;
cbSystem.SelectedIndex = 0;
break;
}
if (p2pMode == p2p.Trace)
tabP2Trace.TabVisible = true;
}
這裏有什麼幫助是要知道你如何實例化你的表單。從那裏可以更容易地提供幫助。 – Crono
我現在可以看到'mainForm'是在哪裏聲明的,但沒有被實例化和顯示。 – Crono
我還應該提到我不太清楚我是否瞭解您的設計。如果'mainForm'是'WordSearch'的成員,那麼當後者關閉時會發生什麼? 'mainForm'應該過時嗎? – Crono