【问题标题】:why does the CLEAR button seem to disable my listbox label output?为什么清除按钮似乎禁用了我的列表框标签输出?
【发布时间】:2012-10-17 19:44:55
【问题描述】:

当我使用列表框运行程序时,在选择项目并按 Enter 后一切正常,但是当我按清除按钮并再次选择项目并按 Enter 时,没有任何反应。我为清除按钮尝试了以下操作,它们清除了我的标签文本和选定的列表框,但是当我在选择项目后再次尝试按 Enter 按钮时,我无法再产生另一个输出。

 public partial class frmLabSix : Form
{
    public string strCakes;
    public int cakeCost;


    public frmLabSix()
    {
        InitializeComponent();
    }

    private void lstCakes_SelectedIndexChanged(object sender, EventArgs e)
    {   
        for (int index = 0; index < lstCakes.SelectedItems.Count; index++)
        {
            strCakes += Environment.NewLine + lstCakes.SelectedItems[index].ToString();

            if (lstCakes.SelectedIndices[index] == 0) cakeCost += 18;
            if (lstCakes.SelectedIndices[index] == 1) cakeCost += 25;
            if (lstCakes.SelectedIndices[index] == 2) cakeCost += 40;
            if (lstCakes.SelectedIndices[index] == 3) cakeCost += 30;
        }

    }

    private void lblOrdered_Click(object sender, EventArgs e)
    {

    }

    private void btnEnter_Click(object sender, EventArgs e)
    {
        double tax = 1.13;
        lblOrdered.Text = "You have ordered: " + strCakes + '\n' + "Total Cost: " + (tax * cakeCost).ToString("C");
        lblOrdered.Visible = true;
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        lstCakes.SelectedItems.Clear();
        lblOrdered.Visible = false;
    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

谁能告诉我这是为什么?

【问题讨论】:

  • @spender,抱歉,Windows 窗体应用程序
  • 单击答案旁边的复选标记会将问题标记为已解决,您不需要也不应该更改其标题。
  • @DourHighArch,感谢您的提示。我已经改变了它。干杯

标签: c# winforms visual-studio-2010 listbox


【解决方案1】:

这行代码隐藏了你的标签。

lblOrdered.Visible = false;

您在清除按钮单击时使您的标签不可见。之后你会重置它的可见性吗? 我不知道,你的代码的其他部分会发生什么,但它可能应该是这样的:

// if the label is not visible, the next line won't make it visible implicitly
lblOrdered.Text = ... 
//you should set label's visibility explicitly
if (!lblOrdered.Visible)
    lblOrdered.Visible = true;

设置标签的文本不会使其可见。如果你用自己的代码隐藏它,你也应该让标签显式可见。

【讨论】:

  • 不,这也没有意义。您发布的代码一定没有任何副作用,我怀疑这段代码会引发问题。
  • @Kiviuq lblOrdered.Visible = false; 你让你的标签在清除按钮点击时不可见。之后你会重置它的可见性吗?说,lblOrdered.Visible = true;...设置标签的文本不会使其可见。如果你用自己的代码隐藏它,你也应该明确地让它可见。
  • @Kiviuq 不过,添加strCakes = string.Empty;' and 'cakeCost = 0;' to your btnClear_Click`。
  • @Kiviuq 你在lstCakes_SelectedIndexChanged 中使用+= 并且永远不会清除strCakescakeCost
  • 就是这样!添加 strCakes = string.Empy 和 cakeCost = 0;可以!非常感谢您的耐心和坚持。干杯我的朋友。非常感谢您的帮助。
猜你喜欢
  • 2016-06-30
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多