c# WPF不能在定义空白后点击按钮

本文关键字:按钮 空白 定义 WPF 不能 | 更新日期: 2023-09-27 18:12:03

我在WPF应用程序中使用以下代码创建了一个按钮:

Button EditButton = new Button();
EditButton.Margin = new System.Windows.Thickness(Location[0], Location[1], 0, 0);
EditButton.Height = double.Parse("20");
EditButton.Width = double.Parse("20");
EditButton.Cursor = System.Windows.Input.Cursors.Hand;
EditButton.Content = "TEST!";
EditButton.Click += new System.Windows.RoutedEventHandler(Edit_Click);
Grid.Children.Add(EditButton);
Location[1] += 17;

当我没有定义EditButton时,按钮可以完美地工作。但一旦我定义了它,我就不能点击它,光标也不会改变。我在网上搜索了一个答案,似乎没有一个是有效的。

c# WPF不能在定义空白后点击按钮

如果您无法单击已创建的控件,则通常是由于该控件的顶部有其他控件导致的。

我建议你稍微修改一下你的代码,从那一点开始:

var stackPanel = new StackPanel();
var button = new Button();
button.Content = "Your Button";
button.Click += new System.Windows.RoutedEventHandler(Edit_Click);
stackpanel.Children.Add(button);

我建议使用StackPanel,因为它会自动安排您的控件,从而防止它重叠,您可以从这一点开始,看看问题是否由网格或其他组件引起。

Button将默认拉伸到它的内容,StackPanel也是。

不确定什么'位置'是在你的代码,我假设'Grid'是网格的名称。

public MainWindow()
    {
        InitializeComponent();
        Button EditButton = new Button();
        EditButton.Margin = new System.Windows.Thickness(10, 10, 0, 0);
        EditButton.Height = double.Parse("20");
        EditButton.Width = double.Parse("20");
        EditButton.Cursor = System.Windows.Input.Cursors.Hand;
        EditButton.Content = "TEST!";
        EditButton.Click += new System.Windows.RoutedEventHandler(Edit_Click);
        Grid.Children.Add(EditButton);
      //  Location[1] += 17;
    }
private void Edit_Click(object sender, RoutedEventArgs e)
{
    throw new NotImplementedException();
}

XAML -

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid x:Name="Grid">
    </Grid>
</Window>

看起来您希望以编程方式完成此操作,但如果您在XAML中定义它,则可以设置按钮的Panel。ZIndex属性设置为一些大的数字,把它放在前面:

<Button Content="TEST!" Panel.ZIndex="1000" Height="20" Width="20" Cursor="Hand" Click="Edit_Click" />