【问题标题】:C# - Selected item in list box unselects itself when I press a buttonC# - 当我按下按钮时,列表框中的选定项目会自行取消选择
【发布时间】:2018-12-28 13:41:58
【问题描述】:

按下从列表框所选项目中提取文本的按钮后,不再选择所选项目,并且当文本发送到“控制台”文本框时,该文本不存在,因为在它之前实际上进入了文本框,它变得未被选中。

private void SpellsButton_Click(object sender, EventArgs e)
{
    populateSpells();
    if (SpellsButton.Text == "Cast")
    {
        string spell = Backpack_Spells.GetItemText(Backpack_Spells.SelectedItem);
        attemptCast(spell);
    }
    SpellsButton.Text = "Cast";
    RunButton.Text = "Cancel";
}

private void attemptCast(string spell)
{
    consoleOutput.AppendText( "Casting " + spell + "\r\n");
}//by the time it makes it here, the selection is no longer selected so the program is unable to find the selections text

private void Backpack_Spells_SelectedIndexChanged(object sender, EventArgs e)
{
    consoleOutput.AppendText(Backpack_Spells.GetItemText(Backpack_Spells.SelectedItem)+ "\n");
}//When a listbox selection is clicked, this fires and outputs the spell.

我不确定为什么按钮会取消选择我的选择。最后一个,索引更改是如何放入文本框的,这很有意义,它是如何工作的,我只是不知道为什么第一个没有。任何帮助将不胜感激:)

【问题讨论】:

  • 可能是个愚蠢的问题,但您是否检查过它是否在选择回发?因为这会将页面重置为原始状态,从而清除您的选择。
  • 不,这不是一个愚蠢的问题,我会 100% 对你诚实。我不知道什么是回帖,哈哈
  • 让我猜猜,populateSpells() 填充(又名,重置Backpack_Spells 列表?
  • 在 Page_Load 事件中的代码中放置一个断点。当您单击按钮时,如果它在断点处停止,那么它正在执行回发,这意味着它正在重新加载整个页面。避免这种情况的唯一方法是在列表框中设置 AutoPostBack = "False"。因此,就像 。或者,在 Page_Load 事件中,您可以使用 If/Then 来检查它是否是回发,如果是,则不会重新加载拼写列表。
  • populateSpells() 只是在我测试时将项目添加到列表框......哦......我看到了 Nyerguds 发生了什么。让我看看我能不能解决这个问题......哈哈...... Facepalm。这解决了它......我发誓我有时很愚蠢,请不要判断

标签: c#


【解决方案1】:

好的,感谢 Nyerguds 指出了一个疏忽。 让我猜猜,populateSpells() 填充(又名,重置)Backpack_Spells 列表? – 内尔古兹

他是对的。当我多次按下按钮时,我什至没有想到它会覆盖文本框。添加了一行,它解决了问题....

if (SpellsButton.Text == "Spells")
populateSpells();//Fills in the spells index

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多