Я делаю приложение, где мне нужно рисовать вещи на панели. Я составил список «Эллипсис» и нарисовал Эллипсис на панели.Как получить индекс из списка нарисованных эллипсов на панели и удалить эллипс?
Допустим, у меня есть 10 Эллипсис, нарисованных на панели, и я хочу удалить 5-й. Как мне это сделать?
Для каждого эллипса я сделал прямоугольник за ним, чтобы я мог щелкнуть по нему.
Я знаю, что существует метод, называемый: list1.RemoveAt() ". Проблема здесь в том, что я не знаю индекс списка. Как найти индекс эллипса при нажатии на него?
Или не следует использовать list1.removeAt()?
это код:
private void panelUseCase_MouseClick(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
else if (rbUseCases.Checked && radioTest.Checked)
{
foreach (UseCase usecase in usecases)
{
if (x >= usecase.Field.Left && x <= usecase.Field.Right && y >= usecase.Field.Top && y <= usecase.Field.Bottom)
{
int bla = usecases.IndexOf(usecase);
drawuc.RemoveAt(bla);
panelUseCase.Invalidate();
}
}
}
}
Переменная usecase
в этом случае эллипс. Это последнее утверждение if из моего метода panelUseCase_MouseClick
. Как вы можете видеть, у меня есть drawuc.RemoveAt()
. Тем не менее я должен установить индекс между(). Но я не знаю индекс, и я хочу получить индекс, нажав на usecase
. Кто-то получил Идею?
Если вы только тест на прямоугольнике почему бы не использовать 'ellips.Contains (Point)'? Для правильного тестирования эллипса вы можете использовать GraphicsPath.IsVisible. См. [Здесь для аналогичного примера] (http://stackoverflow.com/questions/32919918/how-to-draw-line-and-select-it-in-panel/32920894?s=2|0.2144#32920894) - Не рекомендуется, часто запрещать инфузию, изменять список, который вы перечисляете! Реверс для цикла является рекомендуемым способом, как в следующем ответе. - Также: фрагмент кода немного слишком короткий; мы не видим, откуда берутся значения x, y. Показать событие whle! – TaW
Почему я должен использовать ellips.contrains (point)? Я уже проверяю, находится ли прямоугольник за эллипсом. Мне не нужна другая «проверка». И это было слишком сложно с линиями и вещами – Alegou20
Я редактировал все событие! – Alegou20