我剛剛開始使用C#和一個Windows窗體應用程序。我對OOP也相當陌生。我試圖創建一個應用程序,用戶可以在其中修改某些設置,然後打開第二個窗體。我找到了一種方法,使用額外的「設置類」將用戶輸入數據從「設置表單」移動到主表單。但我不確定我是否以良好的方式做這件事,並正在尋求有關最佳實踐的建議。C#使用不同形式的類中的類
我對「主表」的代碼如下所示:
namespace Scheduler
{
public partial class FormScheduler : Form
{
public FormScheduler()
{
InitializeComponent();
}
private PeriodSettings mPeriodSettings = new PeriodSettings();
public string StartDate
{
get{ return mPeriodSettings.StartDate; }
set{ mPeriodSettings.StartDate = value; }
}
private void settingsSchPer_Click(object sender, EventArgs e)
{
FormSchemaPeriodSettings formSchPer = new FormSchemaPeriodSettings();
formSchPer.formScheduler = this;
formSchPer.Show();
}
}
}
而對於代碼「設置形成」看起來像:
namespace Scheduler
{
public partial class FormSchemaPeriodSettings : Form
{
public FormSchemaPeriodSettings()
{
InitializeComponent();
}
public FormScheduler formScheduler = new FormScheduler();
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonOK_Click(object sender, EventArgs e)
{
this.formScheduler.StartDate = this.startDate.Value.ToShortDateString();
this.Close();
}
}
}
例如,我必須定義properity爲SetDate在「主窗體」中,即部分
public string StartDate
{
get{ return mPeriodSettings.StartDate; }
set{ mPeriodSettings.StartDate = value; }
}
爲了能夠訪問類的StartDate的PeriodSettings或有沒有辦法能夠直接訪問已經定義的mPeriodSettings.StartDate?
我PeriodSettings類的樣子:
namespace Scheduler
{
class PeriodSettings
{
private string mStartDate;
private string mEndDate;
public PeriodSettings()
{
}
public string StartDate
{
get{ return mStartDate; }
set{ mStartDate = value; }
}
public string EndDate
{
get{ return mEndDate; }
set{ mEndDate = value; }
}
}
}
感謝任何意見!
前段時間我回答[一個非常類似的問題(http://stackoverflow.com/問題/ 27658076/I-需要對接入一個外形控制從-另一級-C/27659346#27659346)。看看它。這個解決方案也可以派上用場。 – khlr
我肯定會爲窗體創建自定義構造函數,我會通過這些設置類實例 –
當您需要更改的唯一內容是在主窗體中創建的PeriodSettings實例的屬性時,無需傳遞整個窗體。而不是傳遞整個表單傳遞給PeriodSettings實例的引用。 – Steve