我希望我的登录表单在单击“登录”按钮时将ComboBox中选择的对象传递给“配置文件编辑器”表单。
表格有三个要素: 退出按钮 登录按钮 ComboBox - 包含用户配置文件列表
var employeeList = new List<Employee>();
comboBox1.DataSource = employeeList;
comboBox1.DisplayMember = "Name";
这就是我现在设置如何显示配置文件的方法。 我希望所选的配置文件是第二个表单上唯一可访问的配置文件,其中我有控件来编辑指定对象的一些bool值。
如何编写本文,以便我只在第二个表单上编辑一个配置文件?
编辑:Idle_Mind的评论帮助我达到了成功将正确的Employee对象传递到Profile Editor表单的程度。现在的问题是我不能在这段代码之外使用那个Employee对象:
public ProfileEditor(Employee emp)
{
InitializeComponent();
Employee currentProfile = emp;
}
我原本计划使用currentProfile对象来改变每个对象中的一些布尔值,但是currentProfile.isAvailable = true在这段代码之外不起作用。
编辑2:配置文件编辑器上的所有控件现在都可以访问currentProfile。 现在,我可怕的克星,不一致的可访问性错误。 “参数类型'SchedulingApp.Employee'的方法不如方法'SchedulingApps.Forms.ProfileEditor.ProfileEditor(SchedulingApp.Employee)'” 我的员工类,供参考。
class Employee
{
public string Name { get; set; }
private bool isAdmin = false;
public bool[,] isAvailable = new bool[7, 3]
{ // Day Swing Night
/*Sunday*/ {false, false, false},
/*Monday*/ {false, false, false},
/*Tuesday*/ {false, false, false},
/*Wednesday*/ {false, false, false},
/*Thursday*/ {false, false, false},
/*Friday*/ {false, false, false},
/*Saturday*/ {false, false, false}
};
public Employee (string m_name)
{
employeeList = new List<Employee>();
Name = m_name;
}
public Employee (string m_name, bool manager)
{
Name = m_name;
isAdmin = manager;
}
}
答案 0 :(得分:0)
在ProfileEditor表单中声明一个静态Employee变量:
public partial class ProfileEditor : Form
{
public static Employee emp;
public ProfileEditor()
{
InitializeComponent();
}
}
然后在显示ProfileEditor表单之前,将变量设置为您选择的Employee:
ProfileEditor.emp = combobox1.SelectedItem as Employee;
ProfileEditor pe = new ProfileEditor();
pe.Show(this);
现在,您可以在“配置文件编辑器”表单中找到所选的员工对象。
答案 1 :(得分:0)
问题1: 将.SelectedItem转换为Employee并将其传递给Profile Editor的构造函数。
类似的东西:
Employee emp = (Employee)comboBox1.SelectedItem;
问题2: 通常的解决方案是在Profile Editor中的Form级别声明一个Employee变量,然后将Constructor中的引用复制到变量中,以便可以在整个Form中使用它。
问题3:
将public
放在class Employee
前面,这样就可以public class Employee
。