База ответов ИНТУИТ

Создание Windows-приложений на основе Visual C#

<<- Назад к вопросам

Вы разрабатываете приложение, в котором используется асинхронное обновление пользовательского интерфейса. Для этого вы создали метод Upgrade, в котором и происходит обновление:
private void Upgrade(){	// Код для обновления. }

Асинхронный запуск метода Upgrade должен происходить в обработчике события Event:

delegate void DelegateForUpgrade();private void UpgradeRun_Event (object sender, System.EventArgs e){	DelegateForUpgrade DelForUpg = new DelegateForUpgrade(Upgrade);	DelForUpg.BeginInvoke(null, null);}

При запуске приложения и при наступлении события Event вы обнаружили, однако, что обновления пользовательского интерфейса не происходит. Укажите причину и способ ее устранения:

(Отметьте один правильный вариант ответа.)

Варианты ответа
в результате вызова метода UpgradeRun_Event не происходит обновления пользовательского интерфейса в основном потоке. Для решения проблемы необходимо в этом обработчике вызвать метод, в котором будет вызываться метод Upgrade через экземпляр делегата MethodInvoker.(Верный ответ)
в обработчике реализована некорректная синтаксическая конструкция. Правильный вариант выглядит следующим образом:
private void UpgradeRun_Event (object sender, System.EventArgs e){	DelegateForUpgrade DelForUpg = new DelegateForUpgrade();	DelForUpg.Upgrade();	DelForUpg.BeginInvoke(null, null);}
в обработчике реализована некорректная синтаксическая конструкция. Правильный вариант выглядит следующим образом:
private void UpgradeRun_Event (object sender, System.EventArgs e){	DelegateForUpgrade DelForUpg = new DelegateForUpgrade();	DelForUpg.Upgrade(null);	DelForUpg.BeginInvoke(null, null);}
в результате вызова метода UpgradeRun_Event не происходит обновления пользовательского интерфейса в основном потоке. Для решения проблемы необходимо в этом обработчике вызвать метод, в котором будет вызываться метод Upgrade через экземпляр делегата EndInvoke
Похожие вопросы
Вы разрабатываете приложение, в котором используется асинхронное обновление пользовательского интерфейса. Для этого вы создали метод Upgrade, в котором и происходит обновление:
private void Upgrade(){	// Код для обновления. }

Далее вы добавили метод, в котором создали экземпляр mi делегата MethodInvoker:

private void AsynchronousUpgrade(){	// Асинхронный вызов метода Upgrade	MethodInvoker mi = new MethodInvoker(Upgrade);	this.BeginInvoke(mi);}

Выберите правильную конструкцию для асинхронного запуска метода Upgrade:

Вы разрабатываете MDI-приложение, позволяющее просматривать и редактировать документы в форматах .rtf и .txt. На родительской форме добавлено меню, в нем есть пункты "Cохранить" и "Сохранить как…", в обработчиках которых вызывается перегруженный метод Save:
private void mnuSave_Click(object sender, System.EventArgs e){  ChildForm frm = (ChildForm)this.ActiveMdiChild;  frm.Save();}private void mnuSaveAs_Click(object sender, System.EventArgs e){  ChildForm frm = (ChildForm)this.ActiveMdiChild;  frm.Save("");}
Если текст не был сохранен, то при выборе пункта меню "Cохранить" появляется диалоговое окно SaveFileDialog, а если пользователь редактирует уже созданный документ, то его содержимое сохраняется автоматически. Выбирая пункт меню "Сохранить как…", можно сохранить копию существующего документа. Выберите правильную конструкцию для получения подобной функциональности:
Вы разрабатываете приложение для регистрации пассажиров авиарейсов. На главной форме расположен ряд текстовых полей, в которые вводится информация. В поле textBoxPassengerID вводится индивидуальный номер клиента, который совпадает с серией его паспорта, вводимого в поле textBoxPassport. Для реализации операции Drag&Drop из поля textBoxPassport в поле textBoxPassengerID вы добавили обработчики следующих событий:
private void textBoxPassport _MouseDown(object sender,     System.Windows.Forms.MouseEventArgs e){	textBoxPassport.DoDragDrop(textBoxPassport.Text, DragDropEffects.Copy);}private void textBoxPassengerID_DragEnter(object sender,    System.Windows.Forms.DragEventArgs e){	if (e.Data.GetDataPresent(DataFormats.StringFormat)) 		e.Effect = DragDropEffects.Copy;	else		e.Effect = DragDropEffects.None;}

При компиляции приложения вы не получили, однако, нужного эффекта. Выберите нужные действия для завершения задачи:

Вы разрабатываете приложение для регистрации пассажиров поезда . На главной форме расположен ряд текстовых полей, в которые вводится информация. В поле txtPassengerNumber вводится индивидуальный номер клиента, который совпадает с серией его паспорта, вводимого в поле txtPassport. Для реализации операции Drag&Drop из поля txtPassport в поле txtPassengerNumber вы добавили обработчики следующих событий:
private void txtPassport _MouseDown(object sender, System.Windows.Forms.MouseEventArgs e){	txtPassport.DoDragDrop(txtPassport.Text, DragDropEffects.Copy);}private void txtPassengerNumber _DragEnter(object sender,     System.Windows.Forms.DragEventArgs e){	if (e.Data.GetDataPresent(DataFormats.StringFormat)) 		e.Effect = DragDropEffects.Copy;	else		e.Effect = DragDropEffects.None;}

При компиляции приложения вы не получили, однако, нужного эффекта. Выберите нужные действия для завершения задачи:

Вы разрабатываете приложение, в котором требуется проигрывать видео-файлы. Самый простой способ сделать это – внедрить компонент Windows Media Player 9, входящий в состав операционной системы Windows XP:

На форму добавлено главное меню, OpenFileDialog и сам компонент. В обработчике пункта меню "Открыть" открываемый файл начинается проигрываться:

private void mnuOpen_Click(object sender, System.EventArgs e){		if (openFileDialog1.ShowDialog()==DialogResult.OK)	{		КомпонентMediaPlayer.Open(openFileDialog1.FileName);	}}

Выберите название добавленного компонента и его тип:

Вы разрабатываете приложение для регистрации гостей отеля. На главной форме расположен ряд текстовых полей, в которые вводится информация. В поле txtUserID вводится индивидуальный номер клиента, который совпадает с серией его паспорта, вводимого в поле txtUserPassport. Для реализации операции Drag&Drop из поля txtUserPassport в поле txtUserID вы добавили обработчики следующих событий:
private void txtUserPassport _MouseDown(object sender,    System.Windows.Forms.MouseEventArgs e){	txtUserPassport.DoDragDrop(txtUserPassport.Text, DragDropEffects.Copy);}private void txtUserID _DragEnter(object sender,     System.Windows.Forms.DragEventArgs e){	if (e.Data.GetDataPresent(DataFormats.StringFormat)) 		e.Effect = DragDropEffects.Copy;	else		e.Effect = DragDropEffects.None;}

При компиляции приложения вы не получили, однако, нужного эффекта. Выберите нужные действия для завершения задачи:

Вы разрабатываете приложение, в котором имеется следующий метод:
private void txtRegistrationCode_Validating(object sender,     System.ComponentModel.CancelEventArgs e){	if(Valid Registration() ==false)	//Нужный фрагмент кода}

Вам необходимо сделать так, чтобы пользователь не мог переключиться на другие элементы из текстового поля txtRegistrationCode если возвращаемое значение равно false. Выберите нужный фрагмент кода из нижеперечисленного:

Вы разрабатываете приложение, в котором имеется следующий метод:
private void txtRegistrationCode_Validating(object sender,    System.ComponentModel.CancelEventArgs e){	try		{			//Проверка введенного значения			//Первый нужный фрагмент кода									}		catch		{			//Второй нужный фрагмент кода			//Действие в случае ошибки		}	}}

Вам необходимо сделать так, чтобы пользователь не мог переключиться на другие элементы из текстового поля txtRegistrationCode если возвращаемое значение равно false. Выберите нужные два фрагмента нижеперечисленных:

Вы разрабатываете приложение, в котором имеется следующий метод:
private void txtRegistrationCode_ KeyPress(object sender,      System.Windows.Forms.KeyPressEventArgs e){		{	try		{			//Проверка введенного значения			//Первый нужный фрагмент кода											}		catch		{			//Второй нужный фрагмент кода			//Действие в случае ошибки		}	}}

Вам необходимо сделать так, чтобы пользователь не мог переключиться на другие элементы из текстового поля txtRegistrationCode если возвращаемое значение равно false. Выберите нужные два фрагмента нижеперечисленных:

Вы разрабатываете приложение, использующее асинхронную модель работы. Для запуска произвольного метода SomeMethod вы создали делегат SomeDelegate
private delegate string SomeDelegate(/*Некоторые параметры*/);private string SomeMethod(/*Некоторые параметры*/){	//Код для работы метода}

Выберите способ завершения работы Callback метода SomeMethod: