#c# #data-binding
#c# #привязка к данным
Вопрос:
Простой вопрос на C #: Я пытался разработать простую C # DLL, которая использует стороннюю библиотеку для потоковой передачи изображений с цифровой камеры.
Здесь действительно начинающий программист на C #, так что потерпите меня в этом вопросе 🙂
Я добавил счетчик в код, чтобы при каждом извлечении изображения счетчик увеличивался.
Я создал бессмысленный и простой графический интерфейс с кнопками запуска и остановки, чтобы убедиться, что все работает должным образом, потому что в прошлом у нас были некоторые проблемы, когда камера внезапно прекращала потоковую передачу, поэтому я хотел отслеживать этот счетчик таймера, чтобы убедиться, что он непрерывно увеличивается.
Каков разумный способ сделать это, чтобы получить отображение значения таймера в реальном времени? Значение — это просто UInt32 и является частью объекта, созданного из библиотеки DLL.
То, что я на самом деле реализовал, было неаккуратно: у меня есть кнопка, которая при нажатии выводила окно сообщения, отображающее значение таймера, поэтому, чтобы проверить, все ли еще работает, я бы дважды нажал эту кнопку, чтобы убедиться, что значение несколько увеличилось.
Каков правильный способ сделать это? Привязка данных? Что бы большинство из вас сделало в этом простом случае? Мне просто нужна метка / текстовое поле / что угодно, что будет постоянно обновляться значением элемента данных моего счетчика.
Спасибо!
Ответ №1:
Самым простым (при условии, что вы не можете просто обновлять при поступлении новых данных) было бы добавить таймер forms в вашу форму и обновить пользовательский интерфейс в событии «тик» таймера.
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx
Ответ №2:
У меня был бы Label
элемент управления (предполагающий winforms), для текстового свойства которого я бы устанавливал значение счетчика всякий раз, когда оно увеличивается.
counter ;
myLable.Text = counter;
Ответ №3:
метка — это очень хороший подход, но вы должны убедиться, что вы избегаете, чтобы приложение не отвечало, поэтому также добавьте строку кода, которая позволяет форме обрабатывать свою очередь
lblNumber.Text = number;
Application.DoEvents();