Как мне избавиться от всех этих всплывающих окон исключений?
Я помещаю список журналов событий в
dataGridView
из windows froms программа работает нормально и более или менее делает то, что ей нужно, но пока она помещает ее в dataGridView
и пока я прокручиваю события в dataGridView
это выбрасывает тонну ошибок.Видео выпуска: https://youtu.be/Ixl7AatUiW0
Я не знаю, откуда они берутся и с чего начать их чинить.
Вы можете как бы прокручивать события, но он выдает эти ошибки и продолжает работать.
----------------------------------------------------------------------------------------------------------
public static class EventLogClassContainer { public static string EvlLocation { get; set; } = ""; public static string EvlName { get; set; } = "Application"; public static string evlLocationManual = "%Test.evt%"; public static List<EventLogEntry> _LogEntries { get; private set; } public static void ReadEventLog() { EventLog evlLog = new EventLog(EvlName, "."); EventLogEntryCollection eventLogEntries = evlLog.Entries; int eventLogEntryCount = eventLogEntries.Count; foreach (EventLogEntry entry in evlLog.Entries) { //entry.Message _LogEntries = eventLogEntries.Cast<EventLogEntry>().ToList(); } } public static void SetEvlName(string evlLocation) { Parser.FileNameFinder(evlLocation, 3); } public static void RELSystemTest() { EventLog evlLog = new EventLog("Application", "."); EventLogEntryCollection eventLogEntries = evlLog.Entries; int eventLogEntryCount = eventLogEntries.Count; _LogEntries = eventLogEntries.Cast<EventLogEntry>().ToList(); } public static void ParseTest() { evlLocationManual = "K:\\Event Log\\Test\\Test.evt"; ReadEventLog(); } public static void setLogLocation(string input) { EvlLocation = input; } }
----------------------------------------------------------------------------------------------------------
// Open the log file private void OpenFile() { // Show file open dialog if (openFile.ShowDialog() == DialogResult.OK) { // Create a dataset for binding the data to the grid. ds = new DataSet("EventLog Entries"); ds.Tables.Add("Events"); ds.Tables["Events"].Columns.Add("ComputerName"); ds.Tables["Events"].Columns.Add("EventId"); ds.Tables["Events"].Columns.Add("EventType"); ds.Tables["Events"].Columns.Add("SourceName"); ds.Tables["Events"].Columns.Add("Message"); // Start the processing as a background process EventLogClassContainer.EvlLocation = openFile.FileName; worker.RunWorkerAsync(openFile.FileName); } } // Bind the dataset to the grid. private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { EventLogClassContainer.RELSystemTest(); bs = new BindingSource(ds, "Events"); Foo foo1 = new Foo("TEST PC"); ComputerName.Add(foo1); bs.DataSource = EventLogClassContainer._LogEntries; //Bind fooList to the dataGridView dataGridView1.DataSource = bs; this.Invoke(pbHandler, new object[] { 100, 100 }); }
----------------------------------------------------------------------------------------------------------
Исключения ниже:
Следующее исключение в datagridview:
Система.ArgumentException: параметр недопустим. в системе.Рисование.Изображение.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
около
Система.Рисование.ImageConverter.Командлет convertfrom(ITypeDescriptionContext контексте, свойство CultureInfo культуры, значение объекта)
около
Система.Окна.Формы.Форматер.FormatObjectInternal(значение объекта, тип targetType. TypeConverter sourceConverter, TypeConverter targetConverter, String formatString, IFormatProvider formatInfo, Object formattedNullValue) в системе.Окна.Формы.Форматер.FormatObject(объект, значение, формат тип, класса typeconverter sourceConverter, класса typeconverter targetConverter, строке строку формата, объекта iformatprovider formatInfo, объект formattedNullValue, объект dataSourceNullValue)
около
Система.Окна.Формы.Объект datagridviewcell.GetFormattedValue(значение объекта, тип int32 значение параметра rowindex, DataGridViewCellStyle &амп; cellStyle, класса typeconverter valueTypeConverter, класса typeconverter formattedValueTypeConverter, DataGridViewDataErrorContexts контексте)
Чтобы заменить это диалоговое окно по умолчанию, пожалуйста, обработайте событие DataError.
Следующее исключение в datagridview:
Система.ArgumentException: значение '0' не является допустимым значением для перечисления 'EventLogEntryType'.
около
Система.ComponentModel.EnumConverter.ConvertTo (itypedescriptorcontext context, CultureInfo culture, Object value, Type destinationType)
около
Система.Окна.Формы.Форматер.FormatObjectInternal(значение объекта, тип targetType. TypeConverter sourceConverter, TypeConverter targetConverter, String formatString, IFormatProvider formatInfo, Object formattedNullValue) в системе.Окна.Формы.Форматер.FormatObject(объект, значение, формат тип, класса typeconverter sourceConverter, класса typeconverter targetConverter, строке строку формата, объекта iformatprovider formatInfo, объект formattedNullValue, объект dataSourceNullValue)
около
Система.Окна.Формы.Объект datagridviewcell.GetFormattedValue(значение объекта, тип int32 значение параметра rowindex, DataGridViewCellStyle &амп; cellStyle, класса typeconverter valueTypeConverter, класса typeconverter formattedValueTypeConverter, DataGridViewDataErrorContexts контексте)
Чтобы заменить это диалоговое окно по умолчанию, пожалуйста, обработайте событие DataError.
Что я уже пробовал:
Я пробовал пройти через каждого человека
EventLogEntry
без успеха. Данные из List<EventLogEntry>
похоже, это не совпадает с тем, к чему призывает dataGridView. Похоже, dataGridView ищет изображение для данных, которых там нет. Я пробовал отлаживать, но он не улавливает никаких ошибок, он работает нормально, он просто выбрасывает исключения каждый второй щелчок, и я не могу сказать, откуда он исходит.Как я могу заставить это работать должным образом без всех ошибок?
CHill60
Начать здесь:Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
ShadowSMS
Я пробовал отлаживать, но он не улавливает никаких ошибок, он работает нормально, он просто выбрасывает исключения каждый второй щелчок, и я не могу сказать, откуда он исходит.
Patrice T
Вы не знаете, что такое отладка
CHill60
Прочтите эту статью, и вы, возможно, поймете, насколько глуп ваш комментарий ..." он работает нормально, он просто выбрасывает исключения " - это парадокс
j snooze
Могу ли я предложить добавить try{}catch (Exception ex){} в каждый из ваших методов вокруг вашего кода и сделать некоторую обработку ошибок. Сделайте ящик для сообщений.Show ("MethodName:" + ex. Message), то вы будете знать, откуда он исходит и сообщение об ошибке.
ShadowSMS
Хорошо, я попробовал использовать try{}catch {}, но, похоже, его нет в коде. Он вызывает ошибку только после запуска кода и начинает визуально загружать ее в DataGridView в windows forms.
Peter_in_2780
Вы читали последнюю строку сообщений об ошибках? Мне это кажется довольно ясным:
"Чтобы заменить этот диалог по умолчанию, пожалуйста, обработайте событие DataError."
Graeme_Grant
Глядя на ваше видео, кажется, что ссылки на изображения сломаны или искажены. Но, как указал Питер, сообщение об ошибке совершенно ясно.