背景:今天遇到一个怪事,我在WPF中的矩形框中添加了一个鼠标右击触发事件,但是右击过后并没有触发,十分生气胡乱的右击偶尔会触发。非常不解,后来看帖子找到灵感,原来是我的矩形没有填充,后来把矩形背景填充成透明万事大吉。
上代码:
var X = (GrigHeight + GridBorder) * i + GridBorder;
var Y = j * (GrigHeight + GridBorder) + GridBorder;
Rectangle MapGrid = new Rectangle();
MapGrid.Stroke = new SolidColorBrush(Colors.Black);
MapGrid.Fill = new SolidColorBrush(Colors.Transparent);
MapGrid.StrokeThickness = 1;
MapGrid.StrokeDashArray.Add(4);
MapGrid.StrokeDashArray.Add(4);
MapGrid.RadiusX = 10;
MapGrid.RadiusY = 10;
MapGrid.Width = GrigHeight;
MapGrid.Height = GrigHeight;
Canvas.SetLeft(MapGrid, X);
Canvas.SetTop(MapGrid,Y);
MapGrid.MouseRightButtonUp += new MouseButtonEventHandler(MapGridHandler);
(Application.Current.MainWindow as MainWindow).MapCanvas.Children.Add(MapGrid);
public void MapGridHandler(object sender, MouseButtonEventArgs e)
{
;
}
解释代码:
第一行和第二行就理解成一个int数值就可以了.重点是是这一行
MapGrid.Fill = new SolidColorBrush(Colors.Transparent);
如果没有这一行代码只有鼠标点到边框才会触发鼠标事件.
这一行是添加鼠标触发事件
MapGrid.MouseRightButtonUp += new MouseButtonEventHandler(MapGridHandler);
下面的函数就是鼠标触发函数.见第二个代码块.