C# 将按钮切换到文本框

C# 将按钮切换到文本框,c#,wpf,C#,Wpf,我正在开发WPF应用程序,我想在按下按钮时将一个按钮切换到textBox。我试图隐藏按钮,并在点击代码时更改文本框的边距,但边距没有更改。 那我该怎么办 private void sh_Click_1(object sender, RoutedEventArgs e) { TextBox t = new TextBox(); Button b = new Button(); b = sb; t = valeur; b.Visibility = Visibi

我正在开发WPF应用程序,我想在按下按钮时将一个按钮切换到textBox。我试图隐藏按钮,并在点击代码时更改文本框的边距,但边距没有更改。 那我该怎么办

private void sh_Click_1(object sender, RoutedEventArgs e)
{
    TextBox t = new TextBox();
    Button b = new Button();
    b = sb;
    t = valeur;
    b.Visibility = Visibility.Hidden;
    t.Margin = new Thickness(2, 2, 4, 2);
    t.Visibility = Visibility.Visible;          
} 

您应该做的是将文本框添加到XAML中,然后直接引用它来显示/隐藏按钮和文本框

XAML:


您应该做的是将文本框添加到XAML中,然后直接引用它来显示/隐藏按钮和文本框

XAML:


您应该做的是将文本框添加到XAML中,然后直接引用它来显示/隐藏按钮和文本框

XAML:


您应该做的是将文本框添加到XAML中,然后直接引用它来显示/隐藏按钮和文本框

XAML:


您的方法将不起作用,因为您从未将新的texbox添加到可视化树中。 您可以获取按钮的属性(内容、宽度、高度等),因为这是“发送者”

如果按钮位于网格中,则示例:

private void sh_Click_1(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button != null)
        {
            TextBox texbox = new TextBox();
            texbox.Width = button.ActualWidth;
            texbox.Height = button.ActualHeight;
            texbox.Text = button.Content.ToString();
            button.Visibility = Visibility.Collapsed;
            ((Grid)button.Parent).Children.Add(texbox);
            Grid.SetRow(texbox, Grid.GetRow(button));
            Grid.SetColumn(texbox, Grid.GetColumn(button));
        }
    } 

编辑:如果您在XAML中已经有了文本框,则不需要像我的示例中那样再实例化一个文本框。您只需将可见性设置为可见。

您的方法无法工作,因为您从未将新的texbox添加到可视化树中。 您可以获取按钮的属性(内容、宽度、高度等),因为这是“发送者”

如果按钮位于网格中,则示例:

private void sh_Click_1(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button != null)
        {
            TextBox texbox = new TextBox();
            texbox.Width = button.ActualWidth;
            texbox.Height = button.ActualHeight;
            texbox.Text = button.Content.ToString();
            button.Visibility = Visibility.Collapsed;
            ((Grid)button.Parent).Children.Add(texbox);
            Grid.SetRow(texbox, Grid.GetRow(button));
            Grid.SetColumn(texbox, Grid.GetColumn(button));
        }
    } 

编辑:如果您在XAML中已经有了文本框,则不需要像我的示例中那样再实例化一个文本框。您只需将可见性设置为可见。

您的方法无法工作,因为您从未将新的texbox添加到可视化树中。 您可以获取按钮的属性(内容、宽度、高度等),因为这是“发送者”

如果按钮位于网格中,则示例:

private void sh_Click_1(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button != null)
        {
            TextBox texbox = new TextBox();
            texbox.Width = button.ActualWidth;
            texbox.Height = button.ActualHeight;
            texbox.Text = button.Content.ToString();
            button.Visibility = Visibility.Collapsed;
            ((Grid)button.Parent).Children.Add(texbox);
            Grid.SetRow(texbox, Grid.GetRow(button));
            Grid.SetColumn(texbox, Grid.GetColumn(button));
        }
    } 

编辑:如果您在XAML中已经有了文本框,则不需要像我的示例中那样再实例化一个文本框。您只需将可见性设置为可见。

您的方法无法工作,因为您从未将新的texbox添加到可视化树中。 您可以获取按钮的属性(内容、宽度、高度等),因为这是“发送者”

如果按钮位于网格中,则示例:

private void sh_Click_1(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button != null)
        {
            TextBox texbox = new TextBox();
            texbox.Width = button.ActualWidth;
            texbox.Height = button.ActualHeight;
            texbox.Text = button.Content.ToString();
            button.Visibility = Visibility.Collapsed;
            ((Grid)button.Parent).Children.Add(texbox);
            Grid.SetRow(texbox, Grid.GetRow(button));
            Grid.SetColumn(texbox, Grid.GetColumn(button));
        }
    } 


编辑:如果您在XAML中已经有了文本框,则不需要像我的示例中那样再实例化一个文本框。您只需将可见性设置为可见。

这些控件是此函数的局部变量。它们不会添加到可视化树中。你想干什么?这是你的真实代码吗?这段代码不会做任何事情。Valeur和sb是xaml代码上声明的变量。当我按下按钮时,文本框变为可见,我只想将它放在按钮的位置更改b.visibility=visibility.hidden to sb.visibility=visibility.collapsed(隐藏原始按钮)已完成!无结果:这些控件是此函数的局部变量。它们不会添加到可视化树中。你想干什么?这是你的真实代码吗?这段代码不会做任何事情。Valeur和sb是xaml代码上声明的变量。当我按下按钮时,文本框变为可见,我只想将它放在按钮的位置更改b.visibility=visibility.hidden to sb.visibility=visibility.collapsed(隐藏原始按钮)已完成!无结果:这些控件是此函数的局部变量。它们不会添加到可视化树中。你想干什么?这是你的真实代码吗?这段代码不会做任何事情。Valeur和sb是xaml代码上声明的变量。当我按下按钮时,文本框变为可见,我只想将它放在按钮的位置更改b.visibility=visibility.hidden to sb.visibility=visibility.collapsed(隐藏原始按钮)已完成!无结果:这些控件是此函数的局部变量。它们不会添加到可视化树中。你想干什么?这是你的真实代码吗?这段代码不会做任何事情。Valeur和sb是xaml代码上声明的变量。当我按下按钮时,文本框变为可见,我只想将它放在按钮的位置更改b.visibility=visibility.hidden to sb.visibility=visibility.collapsed(隐藏原始按钮)已完成!没有结果:他们引用他们就像我在这里做的,它会很好的工作。你不需要在后面的代码中创建一个新的按钮和文本框,然后像我在这里做的那样引用它们,它会很好地工作。你不需要在后面的代码中创建一个新的按钮和文本框,然后像我在这里做的那样引用它们,它会很好地工作。你不需要在后面的代码中创建一个新的按钮和文本框,然后像我在这里做的那样引用它们,它会很好地工作。你不需要在代码后面创建新的按钮和文本框这太复杂了,在codebehind中创建控件是不好的做法。他确实不清楚这一点,但除非有明确的理由从codebehind创建控件,我使用了那个代码,但文本框的边距没有改变这太复杂了,在codebehind中创建控件是不好的做法。他确实不清楚这一点,但除非有明确的理由从codebehind创建控件,我使用了那个代码,但文本框的边距没有改变这太复杂了,在codebehind中创建控件是不好的做法。他确实不清楚这一点,但除非有明确的理由从codebehind创建控件,不应该这样做。我使用了该代码,但文本框的边距没有改变。这太复杂了,在codebehind中创建控件是不好的做法。他确实不清楚这一点,但除非有明确的理由从codebehind创建控件,否则应该不鼓励这样做。我使用了该代码,但