如何在C#中将数据从一个表单获取到另一个表单

时间:2011-04-16 09:29:59

标签: c# forms

我的功能是从所选文件夹加载图片。现在我想通过以新形式打开它来缩放这张图片 - ZoomLogo。在这个新的表单中,我想从我的主窗体中“获取”fullPath1,然后使用此路径以ZoomLogo形式加载图片。怎么做?

void Picture()
{

...

    if (DataBaseSelection.SelectedIndex+1==1) 
    {
    Logo1_pictureBox.Image=new Bitmap(@"Logos\\aa.bmp");
     var file1 = Path.ChangeExtension(Printer2_TextBox.Text, ".jpg");
    var fullPath1 = Path.Combine(@"Documents\\Base\\", file1);
    if (!File.Exists(fullPath1))
    {
    MessageBox.Show("No picture!");
    }
     else
    {
       Logo_pictureBox.Image = new Bitmap(fullPath1);
    }

...

}

打开新表单:

    void ZoomPictureBoxClick(object sender, EventArgs e)
    {
        ZoomSchematic settings = new ZoomSchematic();
        settings.ShowDialog();          
    }

我试图在我的主要形式中使用类似的东西:

    void ZoomPictureBoxClick(object sender, EventArgs e)
    {
        ZoomSchematic settings = new ZoomSchematic(this.fullPath1);
        settings.ShowDialog();          
    }

但我不知道如何从函数Picture()..

获取此变量

4 个答案:

答案 0 :(得分:0)

如果你真的要放大,为什么不发送图片而不是重新加载图片?例如,

void ZoomPictureBoxClick(Bitmap zoomthis)
{
...
}

因为这仍然在你的表格中,例如

ZoomSchematic settings = new ZoomSchematic(Logo_pictureBox.Image)

这取决于你想要用它做什么,如果你只是要显示设置,我想这取决于你需要路径的原因。

有点像vauge的答案,但我觉得这个问题可以提出更多问题。

如果您需要稍后发送的路径,那么当您创建位图时,您可以/应该保持路径。而不是局部变量。

答案 1 :(得分:0)

使用表单构造函数传递文件路径

Form2 form2 = new Form2(string path);
Form2.ShowDialog();

答案 2 :(得分:0)

这取决于Picture()做什么以及它被称为什么......如果图片向您的主表单提供了多张图片,您将需要理清哪个是相关图片...

如果它只是一张图片,你可以简单地在表单中添加一个新的私有字符串成员fullpath1,每次调用Picture()时都必须设置它...

答案 3 :(得分:0)

只需将fullPath1作为主表单的成员字段。

 class MainForm
 {
     private string fullPath1;

     void Picture()
     {
        if (DataBaseSelection.SelectedIndex+1==1) 
        {
           Logo1_pictureBox.Image=new Bitmap(@"Logos\\aa.bmp");
           var file1 = Path.ChangeExtension(Printer2_TextBox.Text, ".jpg");
           fullPath1 = Path.Combine(@"Documents\\Base\\", file1);
           if (!File.Exists(fullPath1))
           {
              MessageBox.Show("No picture!");
           }
           else
           {
              Logo_pictureBox.Image = new Bitmap(fullPath1);
           }
        }
      }

     void ZoomPictureBoxClick(object sender, EventArgs e)
     {
         ZoomSchematic settings = new ZoomSchematic(this.fullPath1);
         settings.ShowDialog();          
     }
 }

 class ZoomSchematic
 {   
     string _fullPath1;

     public ZoomSchematic(string fullPath1)
     {
        _fullPath1 = fullPath1;
     }
 }