это мой первый вопрос о stackoverflow, поэтому ошибки в стиле запроса не являются целенаправленными.Изменить атрибуты ToolStripButtomItem с помощью EventHandler
Я оба, новичок в C# относительно концепции обработки событий, поэтому Я хотел бы знать, если есть возможность изменить значение атрибута ToolStripButtonItem с помощью EventHandler.
контекст состоит в следующем:
Код начинается с инициализации пользовательского интерфейса, который содержит некоторые элементы Windows.Forms-. ToolStripButtomItem
, который представляет интерес для меня, имеет Enabled-attribute
значение false как значение по умолчанию. Функцией этой кнопки является переход в режим сравнения, как только существует определенный файл ссылки. Это все может быть в случае, когда запускается программа, иначе ссылочный файл может быть создан во время выполнения. Конечно, вы могли бы выполнить
Button.Enabled=System.IO.File.Exists(Reference-File)
с initilization и чем сделать что-то вроде
CreateFile(ReferenceFile){
...
Button.Enabled = true;
}
, но это кажется довольно грубым мне.
Вместо этого я хотел бы что-то вроде:
Button.Enabled = new System.EventHandler(this.EnableButton);
с
private void EnableButton(Object sender, EventArgs e){
if(System.IO.FileExists(ReferenceFile)
Button.Enabled = true;
}
То, что я намерен это, чтобы кнопка получить включен, как только справочно-файл existst. Существует несколько способов создания ссылочного файла, и в будущем существует еще одна цель. Чтобы избежать установки значения включения в каждом из этих методов, концепция EventHandling кажется мне очень похожа на сделку.
Программа, которую я пытаюсь запустить, достаточно всеобъемлющая, поэтому «опрос» не является вариантом в этом месте.
Эй, спасибо за ответ. Следовательно, программа достаточно полная и выполняет двусторонние изменения в файле-коде и связанной с ним визуализации, было бы интересно узнать, насколько интенсивно используется ваше предложение? Это немного похоже на «опрос» по умолчанию, который я бы вообще хотел избежать. – krouch
Совсем нет, насколько я знаю, это чистый случайный драйвер. Так что никаких опросов. Единственная проблема, с которой вы столкнетесь, заключается в том, что за короткое время произойдет много изменений, потому что тогда вы можете пропустить один. (Изменения буферизируются и обрабатываются один за другим с максимальным количеством 128 элементов в буфере, который я думаю.) Я не знаю деталей, хотя это только то, что я помню ... PS, вам, вероятно, следует использовать 'MyButton. InvokeRequired() 'и' MyButton.Invoke (новое действие (() => UpdateState (sender, e))); 'потому что я думаю, что события могут происходить из другого потока. –
Мне кажется, что 'FileSystemWatcher' довольно нестабилен и, скорее всего, терпит неудачу, что было бы неприемлемо на данный момент. – krouch