Окно сообщения не может вызвать локальную переменную - PullRequest
0 голосов
/ 17 мая 2018

Я собираюсь предвосхитить это, говоря, что уверен, что вопрос уже задан, но я перепробовал все предложения, и, похоже, у меня ничего не работает.Он просто возвращает пустое окно сообщения.Если бы ответ был просто хорошим фрагментом кода, я мог бы добавить к своему ответу, который был бы фантастическим.

        private string Text1;
    public void Button_Click(object sender, RoutedEventArgs e)
    {
        TextBox txtbx = new TextBox();
        txtbx.Height = 50;
        txtbx.Width = 200;
        txtbx.Margin = new Thickness(771, 282, 0, 0);
        txtbx.Background = new SolidColorBrush(Colors.White);
        txtbx.Foreground = new SolidColorBrush(Colors.Black);
        Text1 = txtbx.Text;

        if (EditChecked == true)
        {
            LayoutRoot.Children.Add(txtbx);
            Button Save = new Button();
            Save.Height = 25;
            Save.Width = 50;
            Save.Content = "Save";
            Save.Margin = new Thickness(771, 382, 0, 0);
            LayoutRoot.Children.Add(Save);
            txtbx.Text = Text1;
            Save.Click += delegate
            {
                txtbx.Visibility = Visibility.Collapsed;
                Save.Visibility = Visibility.Collapsed;
            };
        }
        else if (ViewChecked == true)
        {
            MessageBox.Show(Text1);
        }

    }

Редактировать: Благодаря mjwills я переместил "Text1 = txtbx.Text;"линия, так что это то, что в конечном итоге работает FYI:

        private string Text1;
        public void Button_Click(object sender, RoutedEventArgs e)
    {
        TextBox txtbx = new TextBox();
        txtbx.Height = 50;
        txtbx.Width = 200;
        txtbx.Margin = new Thickness(771, 282, 0, 0);
        txtbx.Background = new SolidColorBrush(Colors.White);
        txtbx.Foreground = new SolidColorBrush(Colors.Black);


        if (EditChecked == true)
        {
            LayoutRoot.Children.Add(txtbx);
            Button Save = new Button();
            Save.Height = 25;
            Save.Width = 50;
            Save.Content = "Save";
            Save.Margin = new Thickness(771, 382, 0, 0);
            LayoutRoot.Children.Add(Save);
            txtbx.Text = Text1;
            Save.Click += delegate
            {
                txtbx.Visibility = Visibility.Collapsed;
                Save.Visibility = Visibility.Collapsed;
                Text1 = txtbx.Text;
            };
        } 

1 Ответ

0 голосов
/ 17 мая 2018

Вы заявляете:

private string Text1;

Однако вы назначаете его только на случай:

EditChecked = True

И вы выводите сообщение только, если

EditChecked = False

ТакВам нужно назначить Text1, если EditChecked = False.Возможно по объявлению:

private string Text1 = "My default message";
...