Обновлено для отражения в моем собственном источнике
Я нахожусь в процессе создания моего первого приложения winform в c #, и я пытаюсь найти лучший метод структурирования своих классовработать гладко, когда я использую их в моих формах.У меня есть пара примеров, которые я постараюсь объяснить как можно лучше.
При работе с переменными get / set в классе, лучшая практика должна выглядеть примерно так:
JobMove.cs
public class JobMove
{
private List<string> jobNames { get; set; }
public string Scanner;
public JobMove()
{
this.Scanner = Properties.Settings.Default.Scanner;
}
public void ListSelected(ListBox lbx)
{
foreach (string jName in this.jobNames)
{
lbx.Items.Add(jName);
}
}
public static List<string> GetCheckedJobs(ListView lw)
{
int countChecked = lw.CheckedItems.Count;
int itemCount = 0;
List<string> jList = new List<string>();
foreach (ListViewItem item in lw.CheckedItems)
{
JobInfo jobInfo = Job.Find(Convert.ToInt32(lw.Items[item.Index].SubItems[1].Text));
jList.Add(jobInfo.Name);
itemCount++;
}
return jList;
}
}
Моя проблема заключается в том, что когда я объединяю это с моими формами и вызываю это, тогда я пытаюсь сделать что-то вроде этого:
MyForm1.cs
public partial class MyForm1 : Form
{
private void btnMoveJobs_Click(object sender, EventArgs e)
{
Properties.Settings.Default.Scanner = cbxScanners.SelectedItem.ToString();
JobMove moveJobs = new JobMove();
frmMoveJobs FrmMoveJobs = new frmMoveJobs();
FrmMoveJobs.ShowDialog();
}
}
MyForm2.cs
public partial class frmMoveJobs : Form
{
public frmMoveJobs()
{
InitializeComponent();
JobMove moveJobs = new JobMove();
lblFrom.Text = moveJobs.Scanner;
moveJobs.ListSelected(lbxJobsToMove);
cbxMjScanners.DataSource = System.Enum.GetValues(typeof(Scanners));
}
}
Но когда я вызываю MyClass in MyForm2 , и я хочу вызвать DoSomethingElse методтогда myString будет сброшено до значения null .И это имеет смысл для меня, но как мне обойти это?
Я пытался выяснить, что использовать здесь, чтобы легче обойти эти недостатки в моем коде, но мои знания слишком слабы, чтобы просто реализоватьпростое решение.Я знаю, что мог бы просто сохранить эту переменную в Settings.settings в качестве примера, но для меня это просто реальная перегрузка для такой простой задачи.
Мне может просто понадобиться точка в правильном направлении вправочто делать в этой ситуации.