это часть кода:
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
Почему событие MouseLeave срабатывает, даже если курсор мыши все еще находится внутри элемента управления PictureBox? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Отображение увеличенной части PictureBox в другом PictureBox при наведении курсора С#
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
MouseLeave и MouseEnter не срабатывают, если кнопка мыши нажата (Windows Forms)
Anonymous » » в форуме C# - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-