我正在使用Windows表单C#,我有2个表单,第一个表单包含一个menuItem和一个pictureBox,当单击menuItem时,第二个表单出现。第二个表单还包含一个按钮,我想在单击第二个表单中的按钮时,第一个表单的pictureBox中会出现一个位图图像。
这是menuItem事件处理程序,它应该打开另一个表单并在pictureBox中加载图像(当点击第二个表单中的按钮时)
private void imageToolStripMenuItem_Click(object sender, EventArgs e)
{
Form3 win = new Form3();
win.ShowDialog();
pictureBox1.Image = myNormal.bmp;
// displaying.Displaybmp(pictureBox1, b);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
'myNormal'是一个包含位图图像的类。
我不知道为什么pictureBox没有加载图像。
答案 0 :(得分:1)
首先创建接口以调用form1中的方法。
public interface IMyForm
{
void ShowImage(Image image);
}
然后在Form1
中实施该界面,并将图像分配到已实施方法ShowImage(Image)
中的图片框。
public class Form1 : Form, IMyForm
{
public void ShowImage(Image image)
{
this.PictureBox1.Image = image;
}
private void menuitem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2()
frm2.Show(this); //Assign the owner as current form
}
}
现在,编写一些代码来调用Form1中的方法。创建IMyForm
的对象,并从this.owner
属性中分配值。
//Form2
private void button1_Click(object sender, EventArgs e)
{
IMyForm frm = (IMyForm)this.owner;
frm.ShowImage(new Bitmap(@"D:\myImage.jpg"));
}
如果您不希望使用Form.Show(owner)
方法,则可以通过Application.OpenForms[]
表单集合在按钮单击事件中获取可用的表单对象。
IMyForm frm = (IMyForm)Application.OpenForms("Form1");
frm.ShowImage(new Bitmap(@"D:\myImage.jpg"));
答案 1 :(得分:0)
以下是来自msdn的示例:
private Bitmap MyImage ;
public void ShowMyImage(String fileToDisplay, int xSize, int ySize)
{
// Sets up an image object to be displayed.
if (MyImage != null)
{
MyImage.Dispose();
}
// Stretches the image to fit the pictureBox.
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage ;
MyImage = new Bitmap(fileToDisplay);
pictureBox1.ClientSize = new Size(xSize, ySize);
pictureBox1.Image = (Image) MyImage ;
}
看起来您还需要为ClientSize属性提供值。
请参考这里: http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox(v=vs.110).aspx