none
Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll RRS feed

  • Общие обсуждения

  • Доброго времени суток. Имеется проект на C# & Windows Forms. В коде основной формы имеется публичный класс Global_Data с публичными переменными типа int с именем Tence_Chooser, System.Reflection.Assembly с именем thisExe и System.IO.Stream по имени file. На другой форме по нажатию определенной кнопки переменной типа int из данного класса присваивается определенное значение. Исходя из этого значения, switch-case  выбирает картинку, которую нужно вывести на третью форму. Выглядит сие так:

    switch (Personal_English_Teacher_for_Alina.Main_Form.GlobalData.TenseChooser)
                {
                    case 1:
                        Personal_English_Teacher_for_Alina.Main_Form.GlobalData.thisExe = System.Reflection.Assembly.GetExecutingAssembly();
                        Personal_English_Teacher_for_Alina.Main_Form.GlobalData.file = Personal_English_Teacher_for_Alina.Main_Form.GlobalData.thisExe.GetManifestResourceStream("Present Simple.jpg");
                        this.Tence_Viewer.Image = Image.FromStream(Personal_English_Teacher_for_Alina.Main_Form.GlobalData.file);
                        break;
    где Tence_Viewer - элемент picturebox. И при нажатии на любую кнопку получаю Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll, мол, {"Значение 'null' недопустимо для 'stream'."}.  Что делать?

    24 января 2017 г. 3:00

Все ответы

  • "Что делать?"

    Убедиться что ресурс правильно внедрен в сборку

    Метод Assembly.GetManifestResourceStream (String)

    Возвращаемое значение

    Type: System.IO.Stream

    null, если при компиляции не были заданы ресурсы или ресурс не является видимым для вызывающего объекта.


    24 января 2017 г. 3:42
  • Я не написал - файлы картинок лежат в ресурсах в папке Images, и все они отмечены, как внедрённые. Кроме того, в таблице resources.resx есть эти картинки
    • Изменено VadKopchenko 24 января 2017 г. 4:29
    24 января 2017 г. 4:17
  • Неправильное имя ресурса видимо. Используйте Assembly.GetManifestResourceNames() чтоб посмотреть какие ресурсы реально имеются.

    Или используйте код созданный дизайнером, тогда имя не надо знать.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    24 января 2017 г. 5:57
    Модератор
  • Просмотрел Resources.Designer.cs, нашел имена ресурсов

     public static System.Drawing.Bitmap Present_Simple {
                get {
                    object obj = ResourceManager.GetObject("Present_Simple", resourceCulture);
                    return ((System.Drawing.Bitmap)(obj));
                }
            }
    Изменил имя, Image.FromStream заменил на Bitmap.FromStream, все равно не работает

    • Изменено VadKopchenko 24 января 2017 г. 6:30
    24 января 2017 г. 6:27