C# 进行多窗体间的参数传递 以及 使用PictureBox显示不同的图像

时间:2024-04-02 22:20:24

我需要显示不同的因素对于传输损耗的影响的图像,想法是使用一个窗体,当从不同的窗体跳转过来后显示不同的图像。这里需要用到两个功能:①在不同的窗口之间进行参数的传递;②使用一个picturebox控件显示不同的图像(添加资源文件进行动态调用)。

1. 在资源文件添加图片

在解决资源管理器中添加一个资源文件,然后将图片添加到资源文件中(选择添加现有文件)。
C# 进行多窗体间的参数传递 以及 使用PictureBox显示不同的图像
在显示窗口中添加 PictureBox控件 用于显示图片,图片显示的代码是:

 pictureBox.Image =Resource1.XXX;  

2. 多窗体之间的参数传递及图像显示

我这里用到窗体间参数的办法是添加一个公共类,包含一个静态变量,用于各个窗口之间的数值传递。

①添加公共类

在解决方案资源管理器中添加类:Data.cs,在类中写入一个静态变量passData:

class Data
{
    public static string passData;
}

②在传输参数的一边进行设置

举其中一个例子,要实现的功能是当在Form5中,选中“建筑物高度”,点“确定”后在Form7中显示图片3;选中“建筑物间的距离”,点“确定”后在Form7中显示图片4。

Form5窗口设计:
C# 进行多窗体间的参数传递 以及 使用PictureBox显示不同的图像
在“确定”按钮的click事件中写入参数设置的代码:

private void Btn_Yes_Click(object sender, EventArgs e)
{
    if (Rad_hb.Checked)
    {
        Data.passData = "3";     //对Data类中的静态变量passData进行赋值
        var frm = new Form7();  
        frm.ShowDialog();
     }
     else if (Rad_b.Checked)
     {
         Data.passData = "4";
         var frm =new Form7();
         frm.ShowDialog();
     }
}

③在图像显示的窗口处接收传输的参数,然后进行图片显示

在Form7的Load事件中写入代码:

private void Form7_Load(object sender, EventArgs e)
{
     int i = Convert.ToInt32(Data.passData);   
     //读取Data类中静态变量passData的值,并转化为int类型
     
    switch(i)    //显示对应的图像
        {
            case 0:
                pictureBox.Image =Resource1.Hata1;
                break;
            case 1:
                pictureBox.Image =Resource1.Hata2;
                break;
            case 2:
                pictureBox.Image =Resource1.CCIR;
                break;
            case 3:
                pictureBox.Image = Resource1.WIM_Hb;
                break;
            case 4:
                pictureBox.Image =Resource1.WIM_b;
                break;
        }
}

3. 关于图片显示的调整

可以对 PictureBox 控件的 SizeMode属性进行设置:

zoom ——图片的长宽比例会保持不变;
atuosize ——Picturebox的大小会随着图片的大小而更改;
ScretchImage —— 强制使图片的大小跟picturebox的大小相同,图片的长宽比例会发生改变;
CenterImage —— 图片大小不变,图片在picturebox中居中显示,如果图片大小超过picturebox大小,图片会显示不全。

4.运行结果

目前显示的比较丑,后面再进行改进。
C# 进行多窗体间的参数传递 以及 使用PictureBox显示不同的图像