Проблемы с загрузкой изображений в окнах форм C # - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 2 windowsForms, давайте назовем их form1 и form2.form1 состоит из картинки и кнопки.При нажатии на кнопку открывается форма2.Теперь form2 состоит из сетки и в зависимости от позиции, в которой я щелкнул по сетке, координаты x и y возвращаются в form1.Основываясь на этих координатах, я добавляю изображение к картинке.Но изображение не добавляется!Что-то мне здесь не хватает?

Код внутри mouseDownEvent в форме2

Form1 f1 = new Form1();
f1.openImage(x,y);

Код в форме1

internal void openImage(int x, int y)
    {
        string ogFileName = "r" + x.ToString() + "c" + y.ToString();
        string imageFilePath = ogFileName  + "." + extension;
        MessageBox.Show(imageFilePath); //I can see the correct path here
        pictureBox1.Image = Image.FromFile(imageFilePath);
}//extension is a static variable declared outside this function.

1 Ответ

0 голосов
/ 06 июня 2018
Form1 f1 = new Form1();

Эта строка создает только новый экземпляр Form1

. Вы можете добавить переменную Form1, которая будет ссылаться на вашу текущую форму.

Вы инициализируете ее в конструкторе и внажатием кнопки вы передаете его в Form2

public partial class Form1 : Form
{
   Form1 form1; // form1 will store the reference of Form1
   public Form1()
   {
    form1 = this; // We initialize form1 in the constructor
    InitializeComponent();
   }

   // button to open form2
   private void button1_Click(object sender, EventArgs e)
   {
       Form2 form2 = new Form2(form1); // We open form2 with form1 as parameter
        form2.Visible = true;
    }


    public void openImage(int x, int y)
    {

    }

}

Теперь в Form2 вам просто нужно добавить переменную Form1, которая будет инициализирована в конструкторе.

Затем вы можете использовать ее как сейчасон представляет текущий экземпляр Form1

public partial class Form2 : Form
{
    Form1 form1; // Reference to form1

    public Form2(Form1 form1)
    {
        this.form1 = form1; // We initialize form1
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // we call openimage from form1
        form1.openImage(130, 140);
    }
}

Я проверил этот пример с меткой, и он работает нормально, поэтому я думаю, что не должно быть никаких проблем с picturebox

...