[英]Accessors (Properties) without Form.ShowDialog()
我想設置為在創建的DevExpress SplineChart一個ConstantLine Form1
從Form2
,還可以設置一個numericalupdown.value
放置在Form2
的textBox.text
被放置在Form1
,而這兩個Form1
和Form2
是開放和運行。
我正在使用訪問者{get;set;}
來獲取和設置DevExpressChart的值,就像我在代碼中寫下的那樣。
我可以獲取值,但是如果不使用Form1.ShowDialog()
,則無法設置任何值。
我也用過Form1.Update();
和Form1.Refresh();
但是上述代碼僅在使用Form1.Show();
才能成功運行Form1.Show();
或Form1.ShowDialog();
不過,我想他們,而這兩種形式運行時執行Form2
作為一個孩子Form1
的一個看到的變化Form1
碼
//Code Snippet in the Form2:
//NumericalUpDown-ValueChanged Event: In Form2
private void numUpDnShkgTimeRstcConfig_ValueChanged(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
if (chkBxShakingTimeRestCteLineConfig.Checked == true)
{
XYDiagram diagram = (XYDiagram)Frm1.SplineChart.Diagram;
diagram.AxisX.ConstantLines.Add(new ConstantLine("Shaking Time", Convert.ToString(numUpDnShkgTimeRstcConfig.Value)));
Frm1.TxtBx = Convert.ToString(numUpDnShkgTimeRstcConfig.Value);
}
}
//Code Snippet in the Form1
//Pass Objects And Parameter.
public DevExpress.XtraCharts.ChartControl SplineChart
{
get {return SplineChrt1Form1; }
set { SplineChrt1MainFrm = value; }
}
public string TxtBx
{
get { return txtBxSmplWt1Form1.Text; }
set { txtBxSmplWt1Form1.Text = value; }
}
...
我了解您的問題的方式是:
設置此類通知和從子表單更新父表單的最佳方法是使用Events
。 事件使子窗體可以通知其父窗體,而無需實際了解有關父窗體的任何信息。
第1步-創建一個EventArgs類。 此類將用於保存您要從Form2傳遞到Form1的信息。
一般來說,我發現最好將屬性設置為Read Only,並且僅在此類事件的構造函數中設置它們。
// I wasn't sure what the parameters were called or their type,
// so I just used an int and string to demonstrate the functionality
public class ChartValuesChangedEventArgs : EventArgs
{
public ChartValuesChangedEventArgs (int value1, string value2)
{
Value1 = value1;
Value2 = value2;
}
public int Value1 { get; private set; }
public string Value2 { get; private set; }
}
步驟2-聲明將從Form2引發的事件。 這將通知父級(Form1)值已更改以及值是什么。
public event EventHandler<ChartValuesChangedEventArgs> ValuesChanged;
步驟3-發起活動。 您可以在此處通知父項值已更改。 對於此示例,我在單擊按鈕時引發事件。 您可以輕松地將此函數的內容放入自己的numUpDnShkgTimeRstcConfig_ValueChanged
函數中。
private void button1_Click(object sender, EventArgs e)
{
ChartValuesChangedEventArgs chartValuesChangedEventArgs = new
ChartValuesChangedEventArgs(numUpDnShkgTimeRstcConfig.Value,
txtBxSmplWt1Form1.Text);
OnValuesChanged(chartValuesChangedEventArgs);
}
protected virtual void OnValuesChanged(ChartValuesChangedEventArgs e)
{
EventHandler<ChartValuesChangedEventArgs> handler = ValuesChanged;
if (handler != null)
{
handler(this, e);
}
}
步驟4-處理事件。 在這里,您可以使用Form2中的新值/更新值來更新圖表
private void ShowForm2Button_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ValuesChanged += form2_ValuesChanged;
form2.Show();
}
void form2_ValuesChanged(object sender, ChartValuesChangedEventArgs e)
{
// Update the chart values here
Debug.Print(e.Value1.ToString());
Debug.Print(e.Value2);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.