将按钮切换到文本框

时间:2014-04-03 12:59:52

标签: c# wpf

我正在研究WPF应用程序,我想在按下该按钮时将Button切换到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;          
} 

2 个答案:

答案 0 :(得分:3)

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

XAML:

<Button x:Name="sh" Click="sh_Click_1"/>
<TextBox x:Name="valeur" Visibility="Collapsed"/>

C#:

private void sh_Click_1(object sender, RoutedEventArgs e)
{
    sh.Visibility = Visibility.Collapsed;
    valeur.Visibility = Visibility.Visible;          
} 

答案 1 :(得分:0)

您的方法无法正常工作,因为您从未将新的texbox添加到可视树中。 您可以获取Button的属性(内容,宽度,高度等),因为这是&#34;发件人&#34;。

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

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中拥有文本框,则不需要像我的示例中那样再安装一个TextBox。您只需将可见性置于可见状态。