从 form1 列表框到 form2 文本框的数据
本文关键字:文本 数据 form2 form1 列表 | 更新日期: 2023-09-27 18:32:55
我正在处理的程序作业的目标要求我用从数据文件中获取的项目填充列表框,然后允许用户修改所选项目的某些部分。为此,我需要帮助来确定如何将列表框的选定项的一部分传递到另一个表单中的文本框。
这是我对程序中第一个表单的编码:
public partial class Form1 : Form
{
const char DELIM = '''';
const string FILENAME = @"C:'Visual Studio 2015'Data Files'Training Workshops data";
string recordIn;
string[] Fields;
static FileStream file = new FileStream(FILENAME, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(file);
public int X;
public Form1()
{
InitializeComponent();
}
public class Workshop
{
public string title { get; set; }
public int days { get; set; }
public string categrory { get; set; }
public double cost { get; set; }
public string[] categrorynames =
{
"Application Development",
"Databases",
"Networking",
"System Administration"
};
}
Workshop shop = new Workshop();
private void button1_Click(object sender, EventArgs e)
{
Form2 secondForm = new Form2();
secondForm.Show();
}
private void PopulateList(string filePath)
{
while(recordIn != null)
{
try
{
recordIn = reader.ReadLine();
Fields = recordIn.Split(DELIM);
X = Convert.ToInt32(Fields[0]);
shop.categrory = shop.categrorynames[X];
shop.days = Convert.ToInt32(Fields[1]);
shop.title = Fields[3];
shop.cost = Convert.ToDouble(Fields[2]);
}
catch (Exception A)
{
if (X < 0 && X > 3)
{
shop.categrory = "invalid";
}
if (shop.days != Convert.ToInt32(Fields[1]))
{
shop.days = 0;
}
if (shop.title != Fields[3])
{
shop.title = "invalid";
}
if (shop.cost != Convert.ToDouble(Fields[2]))
{
shop.cost = 0;
}
}
}
}
}
下面是指向第二种形式的屏幕截图的链接:
https://i.stack.imgur.com/IRqVh.png
我需要将form1的列表框的选定项的shop.categrory数据传输到第二个表单,并将shop.title,shop.days和shop.cost传输到相应的文本框。从那里我可以做到这样,当用户在文本框中输入的任何内容都会在按下"保存并退出"按钮时更改所选项目的数据。
任何帮助将不胜感激,如果有人注意到我现在的编码错误,请随时指出它们。
在 form2 中创建一个接受字符串的参数化构造函数,并在第一个窗体中创建它的实例,并将要传递的值传递给第二个窗体:
private void button1_Click(object sender, EventArgs e)
{
Form2 secondForm = new Form2("DATA TO BE SENT");
secondForm.Show();
}
并在 form2 中创建一个构造函数:
public Form2(string data)
{
InitializeComponent();
txtData.Text=data;
}