【问题标题】:How do I check if a selected item has changed from the previously selected item?如何检查所选项目是否已从先前选择的项目更改?
【发布时间】:2012-09-21 21:08:00
【问题描述】:

I have a listbox in my winform, when an item in the listbox is selected, a value is placed into a textbox in the same Form. There my many items in my listbox which when selected, i want the text box to be empty so i can pass in the new value.我如何检查用户是否点击了他们最初选择的项目以外的东西?我得到如下当前选中的项目:

var selectedItem = (ReportItems)listbox.selectedItem

【问题讨论】:

  • 什么是“初始选择项”? “初始”什么时候发生?

标签: c# winforms listbox


【解决方案1】:

您可以在 ListBox 上使用 SelectedIndexChanged 事件。您可以为此事件创建一个事件处理程序,以确定ListBox 中的选定索引何时已更改。当您需要根据 ListBox 中的当前选择在其他控件中显示信息时,这会很有用。您可以使用此事件的事件处理程序来加载其他控件中的信息。

请参阅 MSDN 文档:link

【讨论】:

    【解决方案2】:

    您可以为您的 ReportItems 添加一个全局变量并将其命名为“selItem”。

    在用户更改所选项目后,您使用“selItem”变量检查“新”selectedItem。我认为列表框没有一种方法可以检查选择是否与前一个相比发生了变化。 .

    【讨论】:

      【解决方案3】:

      我不确定您是否有理由不利用 ListBoxSelectionChanged 事件,但如果您没有,您应该这样做。此外,确定它是否与最初选择的项目不同应该非常简单,因为您可以将最初选择的项目保存在表单中的 private 变量中,并在每次触发 SelectionChanged 的方法处理程序时进行比较。

      除此之外,我无法提供更多建议,因为您的问题非常不太清楚,而且没有可查看的代码。

      【讨论】:

        【解决方案4】:

        我的解决方案是始终先清除文本框。因此,一旦用户在列表视图中选择了一个项目,而不是立即填充文本框,请在填充之前清除文本框。

        clearText();单击列表框项时立即调用。

            public void clearText()
            {
                textBox1.Clear();
                textBox2.Clear();
                textBox3.Clear();
                textBox4.Clear();
                textBox5.Clear();
                textBox6.Clear();
                textBox7.Clear();
                textBox8.Clear();
                textBox9.Clear();
                textBox10.Clear();
                textBox11.Clear();
                textBox12.Clear();
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-18
          • 1970-01-01
          • 1970-01-01
          • 2020-12-29
          • 1970-01-01
          • 1970-01-01
          • 2012-09-18
          • 1970-01-01
          相关资源
          最近更新 更多