我尝试做的就是为填充列表框的所有内容保存一个参考键列表。将有未知数量的线(用户/"患者")。保存列表后,我希望能够使用列表框索引查找相应的键,并使用它来继续下一部分。
public partial class PatientList : Window
{
HumanResources ListAllPatients;
List<PatientInformation> AllPatients;
string[] Usernames;
public PatientList()
{
InitializeComponent();
int i = 0;
string[] Usernames = new string[i];
ListAllPatients = new HumanResources();
AllPatients = ListAllPatients.PopPatientList();
foreach (PatientInformation PatientChoice in AllPatients)
{
Usernames[i] = PatientChoice.Username;
lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
i += 1;
}
}
以下是将您带到下一部分的按钮的代码
public void btnSelectPatient_Click(object sender, RoutedEventArgs e)
{
PatientInfo PatientInfoWindow = new PatientInfo();
PatientInfoWindow.Show();
//i = lboxPatients.SelectedIndex;
//UserFactory.CurrentUser = Usernames2[i];
this.Close();
}
我的问题是:我相信我已经初始化了一个字符串数组来执行此操作,但VS一直告诉我它没有被分配,并且将始终保持为空。
我的问题:我如何以及在何处正确初始化字符串数组(或更好的东西)以完成从PatientList()到btnSelectPatient的密钥发送?
答案 0 :(得分:0)
你不初始化string[]
字段,而是构造函数中的局部变量:
string[] Usernames;
public PatientList()
{
InitializeComponent();
int i = 0;
string[] Usernames = new string[i];
您必须将此数组分配给字段:
public PatientList()
{
InitializeComponent();
int i = 0;
this.Usernames = new string[i];
但目前没有多大意义,因为它的长度总是为0.
也许你想要这个:
public PatientList()
{
InitializeComponent();
ListAllPatients = new HumanResources();
AllPatients = ListAllPatients.PopPatientList();
this.Usernames = new string[AllPatients.Count];
int i = 0;
foreach (PatientInformation PatientChoice in AllPatients)
{
Usernames[i] = PatientChoice.Username;
lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
i += 1;
}
}
答案 1 :(得分:0)
你有一些错误:
string[] userNames = ...
我的建议是使用List,因为它更适合动态长度列表,而且您不需要自己跟踪索引,它会自动添加到正确的索引中:
HumanResources ListAllPatients;
List<PatientInformation> AllPatients;
List<string> Usernames = new List<string>();
public PatientList()
{
InitializeComponent();
ListAllPatients = new HumanResources();
AllPatients = ListAllPatients.PopPatientList();
foreach (PatientInformation PatientChoice in AllPatients)
{
Usernames.Add(PatientChoice.Username);
lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
}
}