При наведении указателя мыши на параметр «Неверный параметр» - PullRequest
0 голосов
/ 30 октября 2019

У меня есть 3 графических блока, которые содержат изображение из строки списка. Есть кнопка, которая проходит через каждый элемент в строке списка, которая, в свою очередь, обновляет 3 графических блока, графические блоки, которые содержат 3 изображения: picturebox3, 4 и 5. Я добавил событие мыши, которое срабатывает, как только мышьна изображении, чтобы развернуть изображение в другой картинке, которая скрыта до тех пор, пока мышь не окажется над ним. я создал 3 дополнительных ящика с картинками, которые являются pictureBox6, 7 и 8, чтобы показать увеличенное изображение, относящееся к картинкам box3, 4 и 5. picturebox 6 относится к 3, picturebox 7 относится к 4, а 8 относится к 5. Я пыталсяустановите picturebox равным нулю после того, как мышь выключит изображение, однако это не сработало. Ниже приведен код для изображения в картинках 3, 4 и 5, которое будет обновляться при прохождении по списку, а также включает триггеры событий.

download_file_names [] = имя файла ".jpg" match_image_for_Processing [intIndex]= папка, в которой хранится файл

Перечисленные выше переменные меняются по мере того, как я прохожу список, поэтому я знаю, что это работает

Я попытался установить для Picturebox значение NULL после отключения мыши. Однако изображение, которое не сработало.

Ниже приведен код для изображения в картинках 3, 4 и 5, которое будет обновляться при прохождении по списку, а также включает триггеры событий.

if (download_file_names.ElementAtOrDefault(0) != null)
               {
                   pictureBox3.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + matching_image_for_Processing[intIndex] + "\\" + download_file_names[0]);
                   pictureBox3.MouseHover += new EventHandler((sender2, e2) => pictureBox3_Mouse(sender2, e2, download_file_names[0], matching_image_for_Processing[intIndex]));
                   pictureBox3.MouseLeave += new EventHandler(pictureBox3_MouseLeave);
               }
               else
               {
                   pictureBox3.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "NoImage.bmp");

               }

               if (download_file_names.ElementAtOrDefault(1) != null)
               {
                   pictureBox4.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + matching_image_for_Processing[intIndex] + "\\" + download_file_names[1]);
                   pictureBox4.MouseHover += new EventHandler((sender2, e2) => pictureBox4_Mouse(sender2, e2, download_file_names[1], matching_image_for_Processing[intIndex]));
                   pictureBox4.MouseLeave += new EventHandler(pictureBox4_MouseLeave);
               }
               else
               {
                   pictureBox4.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "NoImage.bmp");
               }

               if (download_file_names.ElementAtOrDefault(2) != null)
               {
                   pictureBox5.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + matching_image_for_Processing[intIndex] + "\\" + download_file_names[2]);
                   pictureBox5.MouseHover += new EventHandler((sender2, e2) => pictureBox5_Mouse(sender2, e2, download_file_names[2], matching_image_for_Processing[intIndex]));
                   pictureBox5.MouseLeave += new EventHandler(pictureBox5_MouseLeave);

               }
               else
               {
                   pictureBox5.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "NoImage.bmp");
               }

ниже приведен код для других ящиков для отображения увеличенного изображения.

void pictureBox3_Mouse(object sender, EventArgs e, string catching, string catching2)
       {

           pictureBox6.Visible = true;
           pictureBox6.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + catching2 + "\\" + catching);
           Console.WriteLine("temp_data" + "\\" + catching2 + "\\" + catching);
           pictureBox6.Refresh();




       }

       void pictureBox3_MouseLeave(object sender, EventArgs e)
       {
           pictureBox6.Visible = false;
           pictureBox6.Image = null;
           pictureBox6.Refresh();

       }

       void pictureBox4_Mouse(object sender, EventArgs e, string catching_1, string catching2_1)
       {


                pictureBox7.Visible = true;
               pictureBox7.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + catching2_1 + "\\" + catching_1);
               pictureBox7.Refresh();


       }

       void pictureBox4_MouseLeave(object sender, EventArgs e)
       {
           pictureBox7.Visible = false;
           pictureBox7.Image = null;
           pictureBox7.Refresh();

       }

       void pictureBox5_Mouse(object sender, EventArgs e, string catching_2, string catching2_2)
       {


              pictureBox8.Visible = true;
               pictureBox8.Image = new Bitmap(Environment.CurrentDirectory + "\\" + "temp_data" + "\\" + catching2_2 + "\\" + catching_2);
               pictureBox8.Refresh();


       }

       void pictureBox5_MouseLeave(object sender, EventArgs e)
       {
           pictureBox8.Visible = false;
           pictureBox8.Image = null;
           pictureBox8.Refresh();

       }

Я надеюсь, что кто-то может помочь мне решить эту проблему, когда я перейду к следующему элементу в списке и наведу курсор мыши на новыйimage Я получаю сообщение об ошибке. Параметр недействителен. Я полагаю, что Picturebox содержит предыдущую переменную.

1 Ответ

0 голосов
/ 31 октября 2019

Нет необходимости устанавливать «видимый» для изображения в поле false.

// pictureBox1 image
// pictureBox2 enlarged image
Image image;
private void Form1_Load(object sender, EventArgs e)
{
    pictureBox1.Image = Image.FromFile(@"D:\pic\a.jpg");
    image = pictureBox1.Image;
}

private void pictureBox1_MouseHover(object sender, EventArgs e)
{
    pictureBox1.Image = null;
    pictureBox2.Image = image;
}

private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
    pictureBox1.Image = image;
    pictureBox2.Image = null;
}
...