Marc-IT Ответов: 0

Копирование изображения из picturebox в одной форме в другую


Привет

У меня есть приложение winform на c# с 2 формами.
в форме 1 пользователь выбирает изображение из picturebox и после нажатия кнопки далее это изображение отображается в форме 2 с кучей новой информации.
Это работает, но у меня есть проблема, с кодом у меня есть изображение копируется вместо того, чтобы снова открыть в форме 2. Если я публикую приложение, то получаю ошибку в форме 2, в которой говорится, что файл изображения не может быть найден в папке ..@/Изображения/
ведьма создается, когда я отлаживаю, но не когда публикую, поэтому, если приложение открывает тот же файл вместо того, чтобы копировать его, оно должно работать... я думаю.
Изображение в форме 1 берется из picturebox и добавляется в конструктор.

Код, который я использую, следующий:
Форма 1:

private void button1_Click(object sender, EventArgs e)
{
    if (radioButton1.Checked)

        build build = new build("@../Images/JAF.jpg", "item description", "c1");
        build.ShowDialog();


Что я уже пробовал:

Форма 2:

public build(string img_from_A, string desc, string id)
       {
           InitializeComponent();
           pictureBox2.Load(img_from_A);
           desc1.Text = desc;
           this.prumos = id;

Richard MacCutchan

Вам нужно проверить, является ли расположение файла допустимым. Вы также не должны использовать относительные пути к файлам, как это, но получить правильный полный путь, где находится файл.

Кроме того, я думаю, что ваш знак " @ " находится не в том месте.

Marc-IT

Спасибо за помощь, но если я использую полный путь, не произойдет ли сбой приложения при его установке на другой компьютер?
путь не будет прежним
можно ли скопировать его из памяти?
загрузка формы 2 будет использовать изображение из формы 1, но не копировать его.
что-то вроде:
PictureBox2.Изображение = Имя Picturebox1.Изображения.Клон

Richard MacCutchan

Вам просто нужно настроить путь при его установке. Лучший способ сделать это-использовать один из Окружающая среда.Перечисление Специальных Папок (System)[^] и убедитесь, что вы устанавливаете свои данные в одном и том же месте в каждой системе.

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

Marc-IT

спасибо за подсказку, я не видел кнопки :|

Midi_Mick

Да, но вы должны быть осторожны. Взгляните на мою статью о безопасных изображениях из потоков http://www.codeproject.com/Articles/1135952/Safe-Images-from-Streams чтобы получить представление о том, что может и/или не может произойти.

[no name]

Если вы считаете, что у вас есть проблема с вашим кодом, вы должны показать нам фактический код, который вызывает эту проблему. Минимальный код, который вы показали нам здесь, не может работать, так как вы вызываете "build" с конструктором 3 параметров, а только показываете нам "build" с конструктором одного параметра.

Marc-IT

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

0 Ответов