C#两个窗体,一个是图像列表,另一个是放大的图像,怎么让滚轮滚动放大图像时,另一个图像列表也实时跟着滚动

C#两个窗体,一个是图像列表,另一个是放大的图像,怎么让滚轮滚动放大图像时,另一个图像列表也实时跟着滚动

???如果放大的图片也是一通全部放出的,那就根据高度和距离容器顶的位置计算列表中对应元素的滚动位置啊

该回答引用ChatGPT

你可以使用C#中的事件和委托来实现这个功能。具体来说,你可以在放大的图像窗体中处理滚轮事件,并在这个事件中触发一个自定义事件,让图像列表窗体更新其显示。下面是一个基本的实现示例:

在图像列表窗体中定义自定义事件:

public event EventHandler ZoomChanged;

在放大的图像窗体中处理滚轮事件,并触发自定义事件:


private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
    // 处理滚轮事件
    // ...

    // 触发自定义事件
    ZoomChanged?.Invoke(this, EventArgs.Empty);
}
在图像列表窗体中订阅自定义事件,并更新显示:

csharp
Copy code
private void zoomedImageForm_ZoomChanged(object sender, EventArgs e)
{
    // 更新显示
    // ...
}

在创建放大的图像窗体时,将图像列表窗体的事件处理方法订阅到自定义事件中:



var zoomedImageForm = new ZoomedImageForm();
zoomedImageForm.ZoomChanged += zoomedImageForm_ZoomChanged;
zoomedImageForm.Show();

这里假设ZoomedImageForm是放大的图像窗体的类名。当滚轮事件在放大的图像窗体中触发时,自定义事件ZoomChanged会被激发,并执行与其关联的事件处理方法zoomedImageForm_ZoomChanged,从而实时更新图像列表窗体的显示。