В списке событийBox1_SelectedIndexChanged почему переменная внутри равна нулю?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 В списке событийBox1_SelectedIndexChanged почему переменная внутри равна нулю?

Сообщение Гость »


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

Переменная oy имеет значение null. и я проверил, что listBox1 не имеет значения NULL, а SelectedItem также не имеет значения NULL.

private void listBox1_SelectedIndexChanged (отправитель объекта, EventArgs e) { вар ой = listBox1.SelectedItem как MyListBoxItem; вар вал = ой.Сообщение; } это класс MyListBoxItem:

const stringockFileContents = @"[ { ""ItemColor"": ""Синий"", ""Message"": ""Синий предмет"" }, { ""ItemColor"": ""Зеленый"", ""Сообщение"": ""Зеленый предмет"" }, { ""ItemColor"": ""Красный"", ""Message"": ""Красный предмет"" } ]"; публичный класс MyListBoxItem { общественный цвет ItemColor {get; набор; } общественная строка Сообщение {получить; набор; } } это конструктор:

публичный частичный класс Form1: Форма { BindingList MyItems {get; } = новый BindingList(); Прямоугольник прямоугольник; int пикселейCounter = 0; Выбранный ЦветЦвет = Цвет.Светло-Зеленый; List DrawingRects = новый List(); Растровое изображение rectImage; int saveRectanglesCounter = 1; bool drawBorder = true; Bool ClearRectangles = правда; bool saveRectangles = true; строка «Имя прямоугольника»; Словарь FileList = новый словарь(); строка выбранныйПуть; интервал х, у; частный bool урожай = ложь; общедоступная форма1() { ИнициализироватьКомпонент(); textBox1.Text = Свойства.Настройки.По умолчанию.ImageToCropFolder; textBox2.Текст = Свойства.Настройки.По умолчанию.ПапкаОбрезанныхИзображений; выбранныйПуть = textBox2.Text; если (textBox1.Text != "") { Растровое изображение bmp = новое растровое изображение(Image.FromFile(textBox1.Text), PictureBox2.Width, PictureBox2.Height); PictureBox2.Image = BMP; } checkBoxDrawBorder.Checked = true; checkBoxClearRectangles.Checked = true; checkBoxSaveRectangles.Checked = true; if (selectedPath != "" && selectedPath != null) { если (System.IO.File.Exists(Path.Combine(selectedPath, "rectangles.txt"))) { строка g = System.IO.File.ReadAllText(Path.Combine(selectedPath, "rectangles.txt")); г = г.Удалить(0, 32); FileList = JsonConvert.DeserializeObject(g);; for(int i = 0; i < FileList.LongCount(); i++) { MyItems.Add(новый MyListBoxItem { Сообщение = FileList.Keys.ElementAt(i) + "," + FileList.Values.ElementAt(i), Цвет элемента = Цвет.Зеленый }); } label2.Text = listBox1.Items.Count.ToString(); listBox1.SelectedIndex = listBox1.Items.Count - 1; } еще { label2.Text = "0"; } } еще { label2.Text = "0"; } if ((selectedPath != "" && selectedPath != null) && textBox1.Text != "") { урожай = правда; } еще { урожай = ложь; } } Это код событий OnLoad MouseDown MouseMove MouseUp:
защищенное переопределение void OnLoad(EventArgs e) { base.OnLoad(е); listBox1.DisplayMember = nameof(MyListBoxItem.Message); listBox1.DataSource = МоиЭлементы; listBox1.DrawMode = DrawMode.OwnerDrawFixed; listBox1.SelectedIndexChanged += (отправитель, ee) => listBox1.Refresh(); } Private void imageBox2_MouseDown (отправитель объекта, MouseEventArgs e) { if (e.Button != MouseButtons.Left || обрезка == false) return; х = 0; у = 0; if (pictureBox2.Image != null && selectedPath != null) { if ((x >= 0 && x = 0 && y = 0 && X = 0 && Y 0) { if ((x >= 0 && x = 0 && y 0 && imageBox2.Image != null && selectedPath != "") { if ((x >= 0 && x = 0 && y 0 && dr.Rect.Height > 0) { rectImage =cropAtRect((Bitmap)pictureBox2.Image, dr.Rect); если (сохранить прямоугольники) { считать++; прямоугольникИмя = GetNextName(Путь.Объединить(выбранныйПуть, "Прямоугольник"), ".bmp"); FileList.Add($"{dr.Location}, {dr.Size}", прямоугольникИмя); строка json = JsonConvert.SerializeObject( список файлов, Форматирование. С отступом ); используя (StreamWriter sw = новый StreamWriter(Path.Combine(selectedPath, "rectangles.txt"), false)) { sw.WriteLine("Общее количество прямоугольников: " + count + Environment.NewLine); sw.Write(JSON); SW.Закрыть(); } rectImage.Save(имяпрямоугольника); saveRectanglesCounter++; } еще { поток вар = ToMemoryStream (rectImage); вар изображение = System.Drawing.Image.FromStream(поток); PictureBox1.Image = изображение; } пикселейCounter = rect.Width * rect.Height; PictureBox1.Invalidate(); listBox1.DataSource = FileList.Keys.ToList(); listBox1.SelectedIndex = listBox1.Items.Count - 1; картинкаBox2.Фокус(); Графика g = Graphics.FromImage(this.pictureBox1.Image); g.Clear(this.pictureBox1.BackColor); } } еще { если (clearRectangles) { РисованиеРекты.Очистить(); PictureBox2.Invalidate(); } х = 0; у = 0; } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Статическая переменная равна нулю – Objective-C
    Гость » » в форуме IOS
    0 Ответы
    44 Просмотры
    Последнее сообщение Гость
  • Как я могу гарантировать, что переменная в Pyomo либо останется между границами, либо будет равна нулю?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ сообщить компилятору .NET, что переменная не равна нулю?
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Переменная PHP из запроса MySQL в форме, если она равна нулю
    Anonymous » » в форуме Php
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как скрыть DIV, если переменная равна нулю
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»