これは厄介なコード片である:私の機能が突然止まるのはなぜですか?
private void CodesListSelectedIndexChanged(object sender, EventArgs e)
{
if (_doNothing) return;
_drawMarker = false;
_doNothing = true;
_entitiesList.SelectedItems[0].Selected = false;
_doNothing = false;
Game.CurrentItem = Item.GetItemByCodeId(_codesList.SelectedIndices[0]);
}
private bool _doNothing;
private void EntitiesListSelectedIndexChanged(object sender, EventArgs e)
{
if (_doNothing) return;
_drawMarker = false;
_doNothing = true;
_codesList.SelectedItems[0].Selected = false;
_doNothing = false;
Game.CurrentItem = Item.GetItemByEntityId(_entitiesList.SelectedIndices[0]);
}
は、基本的に私は2つのリストビュー、_codesListと_entitiesListを有し、両方の項目を有しています。私がしたいのは、自分が選択されたとき、もう1人が選択を外すときです。選択されたインデックスをそれぞれの他のリストからfalseに変更するときにトリガーされるイベントを防ぐために、変数_doNothingがあります。これは最初はfalseに設定されています。
ここで、_codesList.SelectedItems [0] .Selected = false;に至るまで、最初の項目を選択すると(_entitiesListで言うことができます)それは突然関数から外れて、他のイベントのトリガーさえもなくなり、他の無関係なものは完全に終了し、この関数の終了に戻ることはありません。私は何度もデバッグを繰り返してきましたが、いつも同じです。これは、_doNothingが再びfalseに設定されることはないので、その後のすべてのイベントコールはただちに失敗することを意味します。
WTFは起こっていますか?
Debug +例外では、CLR例外についてはThrownボックスにチェックを入れます。 64ビットオペレーティングシステムを搭載したマシンでデバッグする場合は、プロジェクトのターゲットプラットフォーム設定をAnyCPUに設定します。 –
あなたのSelectedItemsコレクションが空またはnullで、[0]にアクセスすると例外が発生すると思います。 ListView内に項目がある場合、その項目を選択する必要はありません。ただの推測。 – Tigran
彼らが言ったこと。 –