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。