【发布时间】: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#