Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#代码创建WPF椭圆并用鼠标移动它_C#_Wpf_Mouseevent - Fatal编程技术网

从C#代码创建WPF椭圆并用鼠标移动它

从C#代码创建WPF椭圆并用鼠标移动它,c#,wpf,mouseevent,C#,Wpf,Mouseevent,我有一个画布,我需要在上面放一个(例如)椭圆,不是来自XAML,而是来自代码。我也是 Ellipse e1; public MainWindow() { ... ... e1 = new Ellipse(); e1.Height = 100; e1.Width = 100; e1.Stroke = Brushes.Red; e1.StrokeThickness = 5;

我有一个画布,我需要在上面放一个(例如)椭圆,不是来自XAML,而是来自代码。我也是

Ellipse e1;

public MainWindow()
    {
        ...
        ... 
        e1 = new Ellipse();
        e1.Height = 100;
        e1.Width = 100;
        e1.Stroke = Brushes.Red;
        e1.StrokeThickness = 5;
        Canvas.SetLeft(e1,40);
        Canvas.SetTop(e1,50);
        e1.MouseDown += ellipse_MouseDown;
        Canvas1.Children.Add(e1);

    }

   private void ellipse_MouseDown(object sender, MouseButtonEventArgs e)
    {
        Ellipse el = (Ellipse)sender;
        el.Stroke = Brushes.Green;
        buttonAdd.Content = "New_TEXT";

    }
但它不会在点击时做出反应。无论如何,我试着将这个
ellipse\u MouseDown
方法添加到从XAML创建的ellipse中,它是有效的

 <Canvas x:Name="Canvas1" HorizontalAlignment="Left" Height="421" Margin="10,10,0,0" VerticalAlignment="Top" Width="346">
      <Ellipse x:Name="ellipse" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="111" Margin="117,152,0,0" Stroke="Black" VerticalAlignment="Top" Width="131" MouseDown="ellipse_MouseDown" MouseMove="ellipse_MouseMove" MouseUp="ellipse_MouseUp"/>
  </Canvas>

'因为默认情况下,
Fill
为空,不响应鼠标事件

您需要将
Fill
设置为
透明
,以便它可以对鼠标事件作出反应。默认情况下,
Fill
null
,不响应鼠标事件-

e1.Stroke = Brushes.Red;
e1.Fill = Brushes.Transparent; <-- HERE

您需要将
Fill
设置为
Transparent
,以便它能够对鼠标事件做出反应。默认情况下,
Fill
null
,不响应鼠标事件-

e1.Stroke = Brushes.Red;
e1.Fill = Brushes.Transparent; <-- HERE

请显示有效的XAML,以便我们可以将其与无效的代码进行比较。请显示有效的XAML,以便我们可以将其与无效的代码进行比较。太好了。我更新了
填充
颜色,以防您不希望它是透明的。希望它能解决您的问题。:)伟大的我更新了
填充
颜色,以防您不希望它是透明的。希望它能解决您的问题。:)
e1.Fill = new SolidColorBrush((Color)ColorConverter
                                       .ConvertFromString("#FFF4F4F5"));