【问题标题】:Click an item on a listbox then do some actions单击列表框上的项目,然后执行一些操作
【发布时间】:2020-05-25 10:58:56
【问题描述】:

目前我有它,所以当用户从列表框中选择一个项目,然后按下一个按钮时,标签会显示一些关于该项目的文本

但是我希望这样当用户从列表框中选择/单击一个项目时,它会在标签中显示信息。并在他们单击不同的项目时更改。到目前为止,我有这个,但它什么也没做?我使用正确的方法吗?或者我的内部代码可能有问题。

 private void lbCart_SelectedIndexChanged(object sender, System.EventArgs e)
         {

            string curItem = lbGames.SelectedItem.ToString();


            int index = lbGames.FindString(curItem);
            ratingLbl.Text = "Rating: " + ratingList[index];
            priceLbl.Text = "Price: " + priceList[index];
        }

【问题讨论】:

  • 无法重现您的问题。一切似乎对我来说都很好。 (仅供参考,您可以使用lbGames.SelectedIndex 而不是查找字符串。)当您说“它什么都不做”时,您是什么意思?
  • 首先我意识到我使用了错误的 lb 名称,我使用了 lbCart 而不是 lbGames。我把它改成了那个,但还是不行。当我单击 lbGames 中的某个项目时,标签中没有显示任何内容。
  • 我有那个确切的代码,但我在按钮方法中使用它,所以当我选择一个项目并按下按钮时,它会在标签中显示信息。但是当我只想选择一个项目(不按按钮)时似乎不起作用
  • 我取出了我在 SelectedIndexChanged 方法中的代码,只是放了一个消息框,看看当我选择一个项目时它是否有任何作用,但它仍然什么都不做
  • 请仔细检查此代码连接到哪个列表框。在设计器模式下查看正确列表框的事件属性,并检查其 selectedindexchanged 事件是否显示此方法。如果不是,您可以从下拉列表中选择它。方法的名称无关紧要;按照惯例,它的格式为 Controlname_event(当您双击控件时,设计器会像这样生成它)。

标签: c# winforms windows-forms-designer


【解决方案1】:

首先,我认为您希望事件处理程序中的 lbCart 而不是 lbGames(因为您正在订阅 lbCart SelectedIndexChange 事件)

其次,您是否订阅了该活动?

Xaml:SelectedIndexChanged="lbCart_SelectedIndexChanged"

lbCart.SelectedIndexChanged += lbCart_SelectedIndexChanged;后面的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2023-02-10
    相关资源
    最近更新 更多