Ошибка при отображении TaskDialog как с ProgressBar, так и с пользовательской кнопкой - PullRequest
0 голосов
/ 06 июля 2011

Я использую TaskDialog в WindowsAPICodePack.Когда я пытаюсь создать TaskDialog без использования только TaskDialogProgressBar и TaskDialogButton, он выдает следующее исключение.

System.ComponentModel.Win32Exception был необработанным Message = Недопустимые аргументы для вызова Win32.Source = Microsoft.WindowsAPICodePack ErrorCode = -2147467259 NativeErrorCode = 0 InnerException: System.ArgumentException Message = Значение не попадает в ожидаемый диапазон.InnerException:

Я хотел, чтобы TaskDialog с ProgressBar сообщал о статусе, но я не хочу, чтобы пользователь закрывал диалоговое окно, пока выполнение не будет завершено.Поэтому я использую TaskDialogButton вместо стандартной кнопки закрытия.

Вот код, который я использую.

_taskDialog = new TaskDialog();
_taskDialog.Cancelable = true;
_taskDialog.Caption = "Delete Account";
_taskDialog.InstructionText = "Deleting Account(s)";
_taskDialog.Text = "Please wait until the delete operation completes.";

TaskDialogProgressBar progressbar = new TaskDialogProgressBar();
progressbar.State = TaskDialogProgressBarState.Marquee;
_taskDialog.ProgressBar = progressbar;

TaskDialogButton btnClose = new TaskDialogButton();
btnClose.Click += new EventHandler(OnCloseClick);

_taskDialog.Controls.Add(btnClose);
//_taskDialog.StandardButtons = TaskDialogStandardButtons.Close;

_taskDialog.Icon = TaskDialogStandardIcon.Information;
_taskDialog.OwnerWindowHandle = this.Handle;
_taskDialog.StartupLocation = TaskDialogStartupLocation.CenterOwner;

_taskDialog.Show();

EventHandler для нажатия кнопки закрытия

void OnCloseClick(object sender, EventArgs e)
{
    if (_taskDialog != null)
        _taskDialog.Close();
}

Матф.

1 Ответ

0 голосов
/ 30 августа 2011

Попробуйте две вещи:

Сначала установите для свойства taskDialog StandardButtons значение None:

_taskDialog.StandardButtons = TaskDialogStandardButtons.None;

Второй дать btnЗакрыть имя:

TaskDialogButton btnClose = new TaskDialogButton() { Text = "I'm a button" };
...