выбор радиобуттона открывает новую форму с выбранным изображением

У меня есть приложение winform c#, в котором пользователь может выбрать из различных RadioButtons с ImageBoxрядом с ними.
То, что я хочу сделать, это, когда A RadioButtonвыбран, то же самое изображение появляется на другой форме, чтобы продолжить процесс.
В основном, что мне нужно, это транспортировать выбранное изображение из picturebox1in formAв picturebox2in formB.

То, что у меня есть сейчас это:

private void button1_Click(object sender, EventArgs e)
{
    if (radioButton1.Checked)
    {
        build build = new build(); 
        build.ShowDialog();
    }  
    else if (radioButton2.Checked)
    {

Это только открывает формуbuild, которая имеет PictureBoxв С Я хочу загрузить то же самое изображение из formA.

Спасибо за поддержку,

РЕДАКТИРОВАТЬ:

Я попробовал решение Mong Zhu, но ничего не происходит, когда я нажимаю кнопку. Как указать picturebox, где я хочу, чтобы изображение отображалось? Мой код:

форма:

private void button1_Click(object sender, EventArgs e)
{
    if (radioButton1.Checked)
    {
        build build = new build (@"/Images/2C.png");

Форма:

public partial class build : Form
{
    string img = @"/Images/2C.png";
    public build(string img)
    {
        img = @"/Images/2C.png";
    }

EDIT 2:

Еще раз большое спасибо за помощь, поэтому я использовал ваш код, но теперь я получаю следующую ошибку:

Необработанное исключение типа ‘ System.NullReferenceException ‘ произошло в xxxx.исполняемый
Дополнительная информация: ссылка на объект не задана в качестве экземпляра объекта.

EDIT 3:

Хорошо, так что, спасибо Ваши советы код продвигается, но теперь я получаю следующую ошибку:

Необработанное исключение типа ‘ System.ArgumentException ‘ произошло в системе.Windows.Формы.файл DLL

Дополнительная информация: недопустимые символы на пути. В линии:

pictureBox2.Load(img_from_A);

Я думаю, что это из-за пути, который я использовал, изображения хранятся в папке binImages проекта, и они добавляются в Обозреватель решений.

Код, который я использую:

 build build = new build("@|DataDirectory|/Images/JAF.jpg"); 

Я также пытался:

build build = new build("@../Images/JAF.jpg"); 

и

build build = new build("@/Images/JAF.jpg"); 

Та же ошибка. Любые сладости и еще раз спасибо.

1 ответ

  1. То, что вам в основном нужно, это поле в FormBlike:

    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;
    }
    

    теперь вы можете использовать этот путь, чтобы загрузить изображение вPictureBox FormB

    РЕДАКТИРОВАТЬ:

    Я постараюсь использовать ваш код:

    форма:

    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);
        }
    }
    

    EDIT 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);
        }
    }
    

    EDIT 3:

    если вы используете windows, и ваш образ находится в bin\Imagesпапке, вы должны использовать обратную косую черту \ вместо / и использовать эту строку:

    build build = new build("@..\Images\JAF.jpg");