Не может установить DialogResult в WPF

Сначала отсортируйте диапазон planillaDest по возрастанию по столбцу A, затем:

Dim lookupRange As Range
Set lookupRange = planillaDestino.Range("A2:A" & filaDestinoUltima)

For filaIndiceFuente = 2 To filaFuenteUltima
    criterioFuente = planillaFuente.Cells(filaIndiceFuente, "A").Value
    Dim matchRow As Long
    matchRow = Application.WorksheetFunction.Match(criterioFuente, lookupRange, 1)
    If lookupRange.Cells(matchRow, 1).Value = criterioFuente Then
        'CELLS GET TO THE OTHER FILE HERE
        ' If row to move from planillaFuente to planillaDest, then:
        planillaDest.Cells(matchRow + 1, "P").Value = planillaFuente.Cells(filaIndiceFuente, "D").Value

    End If
Next filaIndiceFuente
29
задан Dave Clemmer 30 July 2011 в 22:54
поделиться

4 ответа

Вы закрываете окно перед тем, как установить DialogResult? Вы должны опубликовать весь контент ваших обработчиков событий кнопки.

2
ответ дан batzen 28 November 2019 в 01:49
поделиться

У меня была похожая проблема, но моя проблема возникла из кода в моем заключительном заявлении. Я пытался Dispose () List до закрытия окна, а затем установил свойство List <> на null ... оно задыхалось от свойства set, когда я пытался установить его значение на null, поэтому я придумал следующий неуклюжий обходной путь в моем методе set set и все работало потом:

    List<SettingItem> settingItems;
    public IEnumerable<SettingItem> Settings
    {
        get
        {
            return settingItems.OrderBy(t => t.Name).AsEnumerable();
        }
        set
        {
            if (value == null)
            {
                settingItems.Clear();
            }
            else
            {
                settingItems = value.ToList();
            }
        }
    }
-1
ответ дан Christopher Jordan 28 November 2019 в 01:49
поделиться

Во-первых, вы должны принять во внимание, что он возвращает значение типа "пустое значение" (bool?), Поэтому, чтобы сравнить его или установить для другой переменной, вы должны преобразовать его в regular bool

bool result = (bool)myWindow.DialogResult;

Что касается значения null ... Я не понимаю, почему это должно происходить, если только он каким-то образом не возвращается в значение null ПОСЛЕ того, как оно установлено в true или false. Вы можете показать свой код?

РЕДАКТИРОВАТЬ:

Ваш код работал у меня нормально, это то, что у меня во втором окне:

private void button2_Click(object sender, RoutedEventArgs e)
{
    this.DialogResult = false;
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    this.DialogResult = true;
}

И в Window1:

private void window1_Loaded(object sender, RoutedEventArgs e)
{
    Window2 win = new Window2();

    bool? result = win.ShowDialog();

    if (result.HasValue && result.Value)
    {
        //it DID get here
    }
}

Есть ли большая разница?

11
ответ дан 28 November 2019 в 01:49
поделиться

DialogResult - это логическое значение, допускающее значение NULL. Однако вам не нужно использовать его, чтобы получить значение.

bool? result = myWindow.ShowDialog();
if (result ?? false)
{
  // snip
}

?? устанавливает значение по умолчанию для возврата, если результат нулевой. Больше информации: Использование типов, допускающих значение NULL (Руководство по программированию на C #)

Что касается исходного вопроса, единственный раз, когда я видел и отслеживал эту проблему, это когда окно удалялось между установкой DialogResult и закрытием окна. К сожалению, единственный совет, который я могу предложить, - это пройтись по вашему коду и проверить порядок операций. Я полагаю, что я "исправил" это, установив DialogResult , а затем явно закрыв окно.

18
ответ дан 28 November 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: