C# 消息框无法调用局部变量

C# 消息框无法调用局部变量,c#,wpf,wpf-controls,messagebox,C#,Wpf,Wpf Controls,Messagebox,我想先说,我肯定这个问题已经被问过了,但我已经尝试了所有的建议,似乎没有什么对我有用。它只是不断返回一个空白的消息框。如果答案只是一段很好的代码片段,我可以添加到我的答案中,那就太棒了 private string Text1; public void Button_Click(object sender, RoutedEventArgs e) { TextBox txtbx = new TextBox(); txtbx.Heigh

我想先说,我肯定这个问题已经被问过了,但我已经尝试了所有的建议,似乎没有什么对我有用。它只是不断返回一个空白的消息框。如果答案只是一段很好的代码片段,我可以添加到我的答案中,那就太棒了

        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;
            };
        } 
您声明:

private string Text1;
但是,您仅在机会上分配:

EditChecked = True
并且仅在以下情况下显示消息:

EditChecked = False
因此,如果EditChecked=False,则需要将Text1指定为on。也许关于宣言:

private string Text1 = "My default message";

既然
txtbx.Text
是空的,为什么您希望看到的不是空的消息框?如果您注释掉
Text1=txtbx.Text?您是否意识到,每次单击链接的按钮时,此代码都会生成一个新的文本框和按钮?也许你应该把这些元素放在设计中,让它们一开始是不可见的……旁注:1)不要用
==true
来检查布尔值。您正在检查的内容已经是布尔值;添加
==true
不会使其成为布尔值。2) 像
string Text1
这样的私有变量不应该以大写字母开头。在C#中,只有类名、函数和属性应该以大写字母开头。@mjwills出现后有人在其中输入文本//我实际上找到了另一种方法,但是thnx。