选择一个单选按钮打开带有所选图像的新表单
selecting a radiobutton opens new form with selected image
我有一个 winform c# 应用程序,用户可以在其中 select 来自各种 RadioButton
,旁边有一个 ImageBox
。
我想做的是,当 RadioButton
被 selected 时,相同的图像出现在另一个表单上以继续该过程。
基本上我需要的是将 selected 图像从 formA
中的 picturebox1
传输到 formB
中的 picturebox2
。
我现在的是这样的:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build();
build.ShowDialog();
}
else if (radioButton2.Checked)
{
...
这只会打开包含 PictureBox
的表单 build
我想从 formA
.
加载相同的图像
感谢支持,
编辑:
我尝试了 Mong Zhu 的解决方案,但是当我点击按钮时没有任何反应。我如何指示我要显示图片的图片框?我的代码是:
FormA:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build (@"/Images/2C.png");
表格 B:
public partial class build : Form
{
string img = @"/Images/2C.png";
public build(string img)
{
img = @"/Images/2C.png";
}
编辑 2:
再次感谢您的帮助,所以我使用了您的代码,但现在出现以下错误:
An unhandled exception of type 'System.NullReferenceException' occurred in xxxx.exe
Additional information: Object reference not set as an object instance.
编辑 3:
好的,所以,谢谢你的提示,代码进步了,但现在我收到以下错误:
An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll
附加信息:路径中的字符无效。在行中:
pictureBox2.Load(img_from_A);
我想这是因为我使用的路径,图像存储在项目的 bin\Images 文件夹中,它们被添加到解决方案资源管理器中。
我使用的代码是:
build build = new build("@|DataDirectory|/Images/JAF.jpg");
我也试过:
build build = new build("@../Images/JAF.jpg");
和
build build = new build("@/Images/JAF.jpg");
同样的错误。任何建议再次感谢。
您基本上需要的是 FormB
中的一个字段,例如:
string image_path;
然后您可以重写构造函数,并在 FormA
中调用它时将此路径传递给表单:
FormB formB = new FormB(image_path_from_formA);
然后构造函数将初始化该字段:
public FormB(string image_path_from_somewhere)
{
image_path = image_path_from_somewhere;
}
现在您可以使用此路径将图像加载到 FormB
的 PictureBox
编辑:
我会尝试使用您的代码:
FormA:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build (@"/Images/2C.png");
}
}
在 FormB 中,您可以存储路径供以后使用或立即加载图片:
public partial class build : Form
{
// you don't need to initialize it. You will pass the right link
// later through the constructor
string img;
public build(string img_from_A)
{
// store for later use
img = img_from_A;
// or load it right away
pictureBox1.Load(img_from_A);
}
}
编辑 2:
请确保在 InitializeComponent()
调用 之后尝试访问构造函数中的任何元素:
public partial class build : Form
{
// you don't need to initialize it. You will pass the right link
// later through the constructor
string img;
public build(string img_from_A)
{
// First this has to happen!
InitializeComponent();
// store for later use
img = img_from_A;
// or load it right away
pictureBox1.Load(img_from_A);
}
}
编辑 3:
如果您正在使用 windows 并且您的图像位于 bin\Images
文件夹中,您应该使用反斜杠 \ 而不是 / 并使用此行:
build build = new build("@..\Images\JAF.jpg");
我有一个 winform c# 应用程序,用户可以在其中 select 来自各种 RadioButton
,旁边有一个 ImageBox
。
我想做的是,当 RadioButton
被 selected 时,相同的图像出现在另一个表单上以继续该过程。
基本上我需要的是将 selected 图像从 formA
中的 picturebox1
传输到 formB
中的 picturebox2
。
我现在的是这样的:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build();
build.ShowDialog();
}
else if (radioButton2.Checked)
{
...
这只会打开包含 PictureBox
的表单 build
我想从 formA
.
感谢支持,
编辑:
我尝试了 Mong Zhu 的解决方案,但是当我点击按钮时没有任何反应。我如何指示我要显示图片的图片框?我的代码是:
FormA:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build (@"/Images/2C.png");
表格 B:
public partial class build : Form
{
string img = @"/Images/2C.png";
public build(string img)
{
img = @"/Images/2C.png";
}
编辑 2:
再次感谢您的帮助,所以我使用了您的代码,但现在出现以下错误:
An unhandled exception of type 'System.NullReferenceException' occurred in xxxx.exe Additional information: Object reference not set as an object instance.
编辑 3:
好的,所以,谢谢你的提示,代码进步了,但现在我收到以下错误:
An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll
附加信息:路径中的字符无效。在行中:
pictureBox2.Load(img_from_A);
我想这是因为我使用的路径,图像存储在项目的 bin\Images 文件夹中,它们被添加到解决方案资源管理器中。
我使用的代码是:
build build = new build("@|DataDirectory|/Images/JAF.jpg");
我也试过:
build build = new build("@../Images/JAF.jpg");
和
build build = new build("@/Images/JAF.jpg");
同样的错误。任何建议再次感谢。
您基本上需要的是 FormB
中的一个字段,例如:
string image_path;
然后您可以重写构造函数,并在 FormA
中调用它时将此路径传递给表单:
FormB formB = new FormB(image_path_from_formA);
然后构造函数将初始化该字段:
public FormB(string image_path_from_somewhere)
{
image_path = image_path_from_somewhere;
}
现在您可以使用此路径将图像加载到 FormB
PictureBox
编辑:
我会尝试使用您的代码:
FormA:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
build build = new build (@"/Images/2C.png");
}
}
在 FormB 中,您可以存储路径供以后使用或立即加载图片:
public partial class build : Form
{
// you don't need to initialize it. You will pass the right link
// later through the constructor
string img;
public build(string img_from_A)
{
// store for later use
img = img_from_A;
// or load it right away
pictureBox1.Load(img_from_A);
}
}
编辑 2:
请确保在 InitializeComponent()
调用 之后尝试访问构造函数中的任何元素:
public partial class build : Form
{
// you don't need to initialize it. You will pass the right link
// later through the constructor
string img;
public build(string img_from_A)
{
// First this has to happen!
InitializeComponent();
// store for later use
img = img_from_A;
// or load it right away
pictureBox1.Load(img_from_A);
}
}
编辑 3:
如果您正在使用 windows 并且您的图像位于 bin\Images
文件夹中,您应该使用反斜杠 \ 而不是 / 并使用此行:
build build = new build("@..\Images\JAF.jpg");