Почему событие MouseLeave срабатывает, даже если курсор мыши все еще находится внутри элемента управления PictureBox?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему событие MouseLeave срабатывает, даже если курсор мыши все еще находится внутри элемента управления PictureBox?

Сообщение Anonymous »

это часть кода:
pictureBox.MouseEnter += (s, e) =>
{
pictureBox.BackColor = Color.FromArgb(50, Color.Black);
pictureBox.Controls.Add(new Label
{
Text = tooltipText,
ForeColor = Color.White,
BackColor = Color.FromArgb(200, 0, 0, 0),
AutoSize = false,
TextAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.Fill,
Font = new Font("Arial", 10, FontStyle.Bold)
});
};

pictureBox.MouseLeave += (s, e) =>
{
pictureBox.BackColor = Color.Transparent;
pictureBox.Controls.Clear();
};

проблема в том, что когда я перемещаю курсор мыши внутри области PictureBox, а затем, когда я перемещаю мышь внутри области PictureBox, не оставляя только внутри, иногда это вызывает код события MouseLeave.< /p>
полный код метода:
private void ArrangeImagesInCollage(string[] filePaths)
{
int imageCount = filePaths.Length;
int margin = 5;

int columns = (int)Math.Ceiling(Math.Sqrt(imageCount));
int rows = (int)Math.Ceiling((double)imageCount / columns);

int panelWidth = panelCollage.Width - (columns + 1) * margin;
int panelHeight = panelCollage.Height - (rows + 1) * margin;
int imageWidth = panelWidth / columns;
int imageHeight = panelHeight / rows;

panelCollage.Controls.Clear();

for (int i = 0; i < imageCount; i++)
{
string filePath = filePaths;
Image img = Image.FromFile(filePath);

PictureBox pictureBox = new PictureBox
{
Image = img,
SizeMode = PictureBoxSizeMode.StretchImage,
BorderStyle = BorderStyle.FixedSingle,
Size = new Size(imageWidth, imageHeight),
Padding = new Padding(3)
};

int row = i / columns;
int col = i % columns;
int x = col * (imageWidth + margin) + margin;
int y = row * (imageHeight + margin) + margin;

pictureBox.Location = new Point(x, y);

ToolTip toolTip = new ToolTip();
FileInfo fileInfo = new FileInfo(filePath);
string tooltipText = $"Name: {fileInfo.Name}\nSize: {fileInfo.Length / 1024} KB\nDimensions: {img.Width}x{img.Height}";
toolTip.SetToolTip(pictureBox, tooltipText);

pictureBox.MouseEnter += (s, e) =>
{
pictureBox.BackColor = Color.FromArgb(50, Color.Black);
pictureBox.Controls.Add(new Label
{
Text = tooltipText,
ForeColor = Color.White,
BackColor = Color.FromArgb(200, 0, 0, 0),
AutoSize = false,
TextAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.Fill,
Font = new Font("Arial", 10, FontStyle.Bold)
});
};

pictureBox.MouseLeave += (s, e) =>
{
pictureBox.BackColor = Color.Transparent;
pictureBox.Controls.Clear();
};

panelCollage.Controls.Add(pictureBox);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -inside-th
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»