c# - 从单独表单上的列表框中编辑记录
问题描述
在我的程序中,我允许用户从列表框中选择学生记录,当他们点击编辑按钮时,会打开一个新表单。此表格显示他们选择的学生的 ID 和标记。我需要让用户编辑该标记并更新列表框。我在让用户编辑时遇到了麻烦,如果有任何建议,我将不胜感激。(当我在编辑表单中有用户数据时,我无法弄清楚该怎么做)谢谢。
我不允许使用 LINQ,因此非常感谢您提供有关如何在没有它的情况下使用 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 以便从另一个表单访问它。
现在我们来看看代码。
表格1
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();
}
}
表单编辑标记
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 并单击更新按钮
更改的数据
点击提交按钮
更新(新)数据
推荐阅读
- c# - 如何为拥有的类型创建单个表
- html - 如何将菜单的背景颜色更改为透明?
- excel - vba 图表从一张纸复制到另一张纸。(希望使用工作表索引参考而不是名称)
- tensorflow-serving - Tensorflow Serving,在线预测:如何构建一个接受“image_bytes”作为输入张量名称的签名定义?
- java - 我如何解决 SpringWebFlow + SpringBoot 中的静态资源?
- amazon-web-services - AWS Comprehend 自定义分类作业输出的行数多于输入行数
- c# - C# - 创建一个递归函数来计算列表的总和。是否可以仅使用列表作为唯一参数?
- javascript - 如何使用函数动态设置img src
- r - 如何根据不同数据框的两个 ID 列的匹配从数据框列中提取值?
- python - 二进制图像上的 Tesseract OCR