在我的程序中,我允许用户从列表框中选择学生记录,当他们点击编辑按钮时,将打开一个新表单。此表单显示他们选择的学生的ID和标记。我需要让用户编辑该标记并更新列表框。我在让用户编辑时遇到问题,并对此提出任何建议表示感谢。 (当我在编辑表单中有用户数据时,我无法弄清楚要做什么)谢谢。
我不被允许使用LINQ,所以如果没有它,如何做到这一点的解决方案或建议将不胜感激。
单击编辑按钮时的主窗体:
private void btnEditMark_Click(object sender, EventArgs e)
{
string[] s_rec_arr;
if (lstMarks.SelectedIndex == -1)
{
MessageBox.Show("please select a student");
}
else
{
ModuleData.s_rec = lstMarks.SelectedItem.ToString();
s_rec_arr = ModuleData.s_rec.Split(':');
ModuleData.s_id = s_rec_arr[0];
ModuleData.s_mark = s_rec_arr[1];
editMark myEditRecordForm = new editMark(); // Opens a form called editMark
this.Hide(); // Hides the previous form
myEditRecordForm.ShowDialog(); // Shows the form
}
}
编辑表格:
public partial class editMark : Form
{
public editMark()
{
InitializeComponent();
StartPosition = FormStartPosition.CenterScreen;
txtStudentID.Focus();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Hide();
Form1 myForm = new Form1();
myForm.ShowDialog();
}
private void editMark_Load(object sender, EventArgs e)
{
txtStudentID.Text = ModuleData.s_id;
txtMark.Text = ModuleData.s_mark;
}
}
我只写了我改变的代码部分。其他部分与你的相同。并且你希望没有linq。
首先将listBox的Modifiers属性设置为Public,以便从另一个表单访问它。
现在我们来看看代码。
Form1中
public Form1()
{
InitializeComponent();
lstMarks.Items.Add("1:Bulutay"); //I don't know your list.This is my guess.
lstMarks.Items.Add("2:Person2"); //
lstMarks.Items.Add("3:Person3"); //
lstMarks.Items.Add("4:Person4"); //
}
private void btnUpdate_Click(object sender, EventArgs e)
{
string[] s_rec_arr;
if (lstMarks.SelectedIndex == -1)
{
MessageBox.Show("please select a student");
}
else
{
ModuleData.s_rec = lstMarks.SelectedItem.ToString();
s_rec_arr = lstMarks.SelectedItem.ToString().Split(':');
ModuleData.s_id = s_rec_arr[0];
ModuleData.s_mark = s_rec_arr[1];
this.Hide(); //We hide our Main Form, it's still running at background and waiting to be shown again.We will use it.
editMark myEditRecordForm = new editMark(); //Edit Form
myEditRecordForm.Owner = this; //We set New Edit Form's owner as this mainForm to access its lstMarks(listBox).
myEditRecordForm.ShowDialog();
}
}
表格editMark
private void btnSubmit_Click(object sender, EventArgs e)
{
string data = txtStudentID.Text + ":" + txtMark.Text;
string[] parts = data.Split(':');
Form1 mainForm = (Form1)this.Owner; //We get our hidden owner's REFERENCE to mainForm object.
for (int i = 0; i < mainForm.lstMarks.Items.Count; i++) //loops mainForm.lstMarks.Items.Count
{
string[] item = mainForm.lstMarks.Items[i].ToString().Split(':'); //We test all of items one by one.
if (item[0] == ModuleData.s_id) //if listbox's current item's ID part equals to our static ModuleData.s_id
mainForm.lstMarks.Items[i] = data; //Set new data.
}
mainForm.Show(); //We show our old Main Form which we hided before.
this.Close();
}
项目截图。
我选择了Person3并点击了UPDATE按钮
更改了数据
单击“提交”按钮
更新(新)数据