У меня есть список, который не заполнен предметами до конца, и имеет некоторую пустую область после последнего предмета. Когда я щелкаю эту пустую область, последний элемент автоматически выбирается. И этот выбор происходит до события MouseDown
. И я хочу предотвратить это.
Я могу сохранить текущий выбранный индекс (можно выбрать только один элемент) в переменной в SelectedIndexChanged
и сбросить его в MouseDown
, но между MouseDown
и MouseUp
выбран последний элемент - и он не не выглядит хорошо.
Как предотвратить выбор последнего элемента при нажатии на пустую область?
P.S. Это нарисованный владельцем ListBox, но я не уверен, что это как-то связано с этой проблемой.
private void listBox_DrawItem(object sender, DrawItemEventArgs e)
{
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
e.Graphics.FillRectangle(Brushes.LightSteelBlue, e.Bounds);
}
else
{
e.Graphics.FillRectangle(Brushes.White, e.Bounds);
}
if (_commands.Count > 0)
{
KeyValuePair<string, string> cmd = (KeyValuePair<string, string>)_commands[e.Index];
// FIRST ROW
e.Graphics.DrawString(cmd.Key, _cmdNameFont, Brushes.Black, e.Bounds.X, e.Bounds.Y + _cellPadding);
// SECOND ROW
e.Graphics.DrawString(cmd.Value,
_cmdCommandFont, Brushes.Black, e.Bounds.X + 5, e.Bounds.Y + _cmdNameFont.Height + _cellPadding);
}
e.DrawFocusRectangle();
}
private void listBox_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = _cmdNameFont.Height + _cmdCommandFont.Height + _cellPadding * 2 ;
}