我正在使用new
按钮,在点击时会重置表单应用程序。
但是我遇到了一个我似乎无法解决的问题。
基本上我想要做的是在点击按钮new时清除列表框。
“新建”按钮应该完全按照初始化程序 启动(但不重新启动应用程序)。如果数据没有 已保存,允许用户(通过MessageBox)确认 继续操作而不保存当前数据或返回当前数据 会话。
以下是我尝试的方法:
private void mnuNew_Click(object sender, EventArgs e)
{
for (int index = 0; index < animalmgr.Count; index++)
{
Animal animal = animalmgr.GetAt(index);
if (animal != null)
{
// error message
DialogResult dialogResult = MessageBox.Show("The data will be lost. Continue?", "Are you sure?", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
InitializeGUI();
}
else if (dialogResult == DialogResult.No)
{
}
}
else
{
ClearLists(); <--------This does not work!
}
}
}
private void InitializeGUI()
{
animalmgr.DeleteAll();
Resultlst.Items.Clear();
foodItemslst.Items.Clear();
}
public void ClearLists()
{
Gendercmb.DataSource = Enum.GetValues(typeof(GenderType));
Categorylst.DataSource = Enum.GetValues(typeof(Categorytype));
Resultlst.Items.Clear();
foodItemslst.Items.Clear();
}
工作原理:如果animal
对象不为空,它会显示消息框。
什么行不通:当我加载文件并在列表框中显示对象时,new
按钮不会清除列表。原因是因为animal
对象在加载文件并显示后为空,但它应该调用else
并清除列表,但事实并非如此。
更新
问题不在于ClearLists()
方法。问题是if statement
似乎永远无法达到要求。问题不在于ClearLists()
方法本身。问题是它从未被调用过。
答案 0 :(得分:2)
我认为问题在于你的逻辑比较
animal != null
查看您的逻辑,上面的行给出了animal
一个值,即使该值为0.因此animal
从不 null,因为它始终具有值
答案 1 :(得分:0)
试试这个。
public void ClearLists()
{
Gendercmb.DataSource = Enum.GetValues(typeof(GenderType));
Categorylst.DataSource = Enum.GetValues(typeof(Categorytype));
Resultlst.DataSource = new List<ListItem>();
foodItemslst.DataSource = new List<ListItem>();
}
请记住,如果这是一个asp.net webforms应用程序,您还需要在foodItemslst和Resultlst上调用DataBind()dunction。