【发布时间】:2014-06-18 14:58:11
【问题描述】:
我是编程新手,尝试在表单之间发送信息时遇到了很多麻烦。
我现在的情况:
我有 2 个表格和一个班级。我的第一个表单只包含一个列表框,而我的第二个表单包含几个带有确定按钮的文本框。我想要做的是在form2 的文本框中输入信息,点击确定,然后让每个文本框中的所有信息都填充到我的form1 的列表框中。来自 form2 的信息应该都在 form1 的列表框中的一行。
现在我要做的是将form2 的文本框中的信息添加到我的自定义类中,然后将该自定义类传递给form1 中的列表框。我将不胜感激任何帮助。这是我到目前为止的代码:
表格2:
public partial class frmProperties : Form
{
private string empVar;
public string EmployeeNew
{
get { return empVar; }
set { empVar = value; }
}
public frmProperties()
{
InitializeComponent();
}
private void btnCancel_Click(object sender, EventArgs e)
{
Close();
}
private void btnOk_Click(object sender, EventArgs e)
{
string empVar;
double salaryToDouble = Convert.ToDouble(txtSalary.Text);
Employee testEmploy = new Employee(txtFirstName.Text, txtLastName.Text, txtEmpType.Text, salaryToDouble);
empVar = Convert.ToString(testEmploy);
}
}
表格1:
public partial class Form1 : Form
{
//public vars for file access
FileStream output;
StreamReader fileReader;
StreamWriter fileWriter;
public Form1()
{
InitializeComponent();
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fileChooser = new OpenFileDialog();
fileChooser.Title = "Choose an employee file to open";
fileChooser.Filter = "Text Files (*.txt)|*.txt";
DialogResult result = fileChooser.ShowDialog();
//if cancel
if (result == DialogResult.Cancel)
{
return;
}
string strFileName = fileChooser.FileName;
try
{
//open file for read access
output = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
fileReader = new StreamReader(output);
//var to hold the read record
string strInputLine;
string[] fields;
//loop to get records and break into fields
while (fileReader.EndOfStream != true)
{
//read record
strInputLine = fileReader.ReadLine();
//split the record
fields = strInputLine.Split(',');
//Check for empty space
if (!string.IsNullOrEmpty(strInputLine))
{
double salaryToDouble = Convert.ToDouble(fields[3]);
lstBoxEmployees.Items.Add(new Employee(fields[0], fields[1], fields[2], salaryToDouble));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//close resources
fileReader.Close();
output.Close();
}
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
//create dialog
SaveFileDialog fileChooser = new SaveFileDialog();
fileChooser.Title = "Choose a Save Location";
fileChooser.Filter = "Text Files (*.txt)|*.txt";
//open dialog, get result
DialogResult result = fileChooser.ShowDialog();
//if cancel
if (result == DialogResult.Cancel)
{
return;
}
//get file name from dialog
string strFileName = fileChooser.FileName;
try
{
//save via filestream
//open the new file for write access
output = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.Write);
fileWriter = new StreamWriter(output);
//take the text from listbox and write it to a file
fileWriter.WriteLine(lstBoxEmployees);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//close resources
fileWriter.Close();
output.Close();
}
}
private void addNewToolStripMenuItem_Click(object sender, EventArgs e)
{
MenuOpen();
}
//Properties form method.
private void MenuOpen()
{
frmProperties newEmployee = new frmProperties();
DialogResult result = newEmployee.ShowDialog();
if (newEmployee.ShowDialog() == DialogResult.OK)
{
lstBoxEmployees.Items.Add(newEmployee.EmployeeNew);
}
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
MenuOpen();
}
private void lstBoxEmployees_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lstBoxEmployees.SelectedItem != null)
if (lstBoxEmployees.SelectedItem.ToString().Length != 0)
MenuOpen();
}
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
object toRemove = lstBoxEmployees.SelectedItem;
lstBoxEmployees.Items.Remove(toRemove);
}
}
自定义类:
class Employee
{
private string firstName;
private string lastName;
private string empType;
private double salary;
//Constructor
public Employee(string FirstName, string LastName, string EmpType, double Salary)
{
firstName = FirstName;
lastName = LastName;
empType = EmpType;
salary = Salary;
}
public string EmployeeFirstName
{
get { return firstName; }
set { firstName = value; }
}
public string EmployeeLastName
{
get { return lastName; }
set { lastName = value; }
}
public string EmploymentType
{
get { return empType; }
set { empType = value; }
}
public double EmployeeSalary
{
get { return salary; }
set { salary = value; }
}
public override string ToString()
{
return (firstName + ", " + lastName);
}
}
【问题讨论】:
标签: c# wpf winforms reference listbox