我有一个名为chamberlist的类,其中只有一个列表,其中有腔室。 从文本文档中我将凭证加载到一个腔室对象中。
在我的列表框中,我已经从腔室列表中设置了我的数据源,因此每个添加到腔室列表的腔室都会将其列表添加到该列表框中。
我的问题是如何从该列表框中获取所选项目并对其执行某些操作,例如将标记1中的chambernumber和label2中的最大数量放入。
以下是我的课程:
ChamberList:
class ChamberList
{
public static List<Chamber> chambers = new List<Chamber>();
private static ChamberList instance = null;
public ChamberList()
{
}
public List<Chamber> readAllChambers()
{
return chambers;
}
public void addChamber(Chamber c)
{
chambers.Add(c);
}
public static List<Chamber> getChambers()
{
return chambers;
}
public static void setChambers(List<Chamber> chambers)
{
ChamberList.chambers = chambers;
}
public static ChamberList getInstance()
{
if (instance == null)
{
instance = new ChamberList();
}
return instance;
}
}
庭:
class Chamber
{
private int chambernumber;
private int maxGuests;
private Boolean isBooked;
public static List<Person> persons = new List<Person>();
public Chamber(int chambernumber, int max, Boolean booked)
{
this.chambernumber = chambernumber;
this.maxGuests = max;
this.isBooked = booked;
}
public int getChamberNumber()
{
return chambernumber;
}
public void setChamberNumber(int chambernum)
{
this.chambernumber = chambernum;
}
public int getMaxGuests()
{
return maxGuests;
}
public void setMaxGuests(int max)
{
this.maxGuests = max;
}
public Boolean getIsBooked()
{
return isBooked;
}
public void setIsBooked(Boolean b)
{
this.isBooked = b;
}
public static List<Person> getPersons()
{
return persons;
}
public static void setPersons(List<Person> persons)
{
Chamber.persons = persons;
}
}
形式:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DAOChamber dc = new DAOChamber();
dc.loadAllChambers();
listBox1.DataSource = ChamberList.getInstance().readAllChambers();
listBox1.DisplayMember = "chambernumber";
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = listBox1.SelectedItem.ToString();
}
}
这是我到目前为止所得到的,但我希望代替“hotelsysteem.chamber”显示的房间号码以及填写所选房间信息的标签。
答案 0 :(得分:0)
正确地投射SelectedItem,然后使用该对象,如下所示。我没有对它进行过测试,但它理论上应该有效。
Chamber c = listBox1.SelectedItem as Chamber;
label1.Text = c.chambernumber.ToString();
答案 1 :(得分:0)
如果你来自另一种(也许是Java?)语言,那么你的Chamber
类看起来很像。这不是你在c#中编写普通模型的方式,它应该更像这样,使用属性;
public class Chamber
{
public int ChamberNumber { get; set; }
public int MaxGuests { get; set; }
public bool Isbooked { get; set; }
public static List<Person> persons = new List<Person>();
public Chamber(int chambernumber, int max, Boolean booked)
{
ChamberNumber = chambernumber;
MaxGuests = max;
IsBooked = booked;
}
}
有了这个,您还可以使用这些值绑定到ListBox
:
DAOChamber dc = new DAOChamber();
dc.loadAllChambers();
listBox1.DataSource = ChamberList.getInstance().readAllChambers();
listBox1.DisplayMember = "ChamberNumber";
然后,您可以使用SelectedValueChanged
获取所选项目并使用:
Chamber chamber = listBox1.SelectedValue as Chamber;
label1.Text = chamber.ChamberNumber.ToString();
label2.Text = chamber.MaxGuests.ToString();
// etc