小编Ric*_*bob的帖子

ScrollViewer中的画布(预览)MouseButtonDown事件顺序

如果我们有

<ScrollViewer Name="scroll_viewer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Canvas Name="canvas" Height="200" Width="200">
        <Rectangle Fill="AliceBlue" Width="100" Height="100"/>  
    </Canvas>
</ScrollViewer> 
Run Code Online (Sandbox Code Playgroud)

与处理程序:

scroll_viewer.PreviewMouseLeftButtonDown
scroll_viewer.MouseLeftButtonDown
canvas.PreviewMouseLeftButtonDown
Run Code Online (Sandbox Code Playgroud)

然后,如果我们点击我们得到的矩形scroll_viewer_PreviewMouseLeftButtonDown称为第一则canvas_PreviewMouseLeftButtonDown,但scroll_viewer_MouseLeftButtonDown不叫.
我想首先在画布中处理click事件 - 如果单击一个对象我想处理事件(对象拖动).如果没有单击画布对象,我想在scroll_viewer中处理事件(使用鼠标管理scrollview平移).
考虑到呼叫顺序是我想要的对话scroll_viewer.MouseLeftButtonDown并且不调用非perview版本,如何管理这个?

更新:
从这篇文章:Silverlight论坛

((FrameworkElement)scroll_viewer.GetValue(ScrollViewer.ContentProperty)).MouseLeftButtonDown += scroll_viewer_MouseLeftButtonDown;
Run Code Online (Sandbox Code Playgroud)

是否工作即在预览事件后调用 - 有人可以解释为什么需要这种不太明显的语法吗?

wpf scrollviewer mouseleftbuttondown

3
推荐指数
1
解决办法
1463
查看次数

可选参数"必须是编译时常量"

我有一个类似的问题,在这个SO问题中描述的问题 在我的情况下,可选的param默认值是:
1.在单独的C++/CLI dll中定义.
2.已在该lib中定义为"public static const"
当我尝试将该值用作C#的默认参数值时,我得到"必须是编译时常量".
有没有办法在(C++/cli)库和(C#)应用程序之间共享一个公共const值?

C++/CLI lib:

namespace MyCPlusPlusCLILib {
    public ref class CPPCLIClass {
    public:
       static const double Invalid = -1;
}
Run Code Online (Sandbox Code Playgroud)

C#代码:

public MyMethod(double fish = MyCPlusPlusCLILib.CPPCLIClass.Invalid) { }
// C# compiler error "Must be a compile time const"
Run Code Online (Sandbox Code Playgroud)

要么

const double MyConstDouble = MyCPlusPlusCLILib.CPPCLIClass.Invalid;
// C# compiler error "Must be a compile time const"
Run Code Online (Sandbox Code Playgroud)

c# c++-cli const default-value

3
推荐指数
1
解决办法
1334
查看次数

.NET编译器和"并非所有代码路径返回值"

为什么在如下代码中.NET编译器无法确定所有代码路径都返回值?

bool Test(bool param) {
    bool test = true;
    if (param)
        test = false;
    else
        test = false;
    if (!test)
        return false;
}
Run Code Online (Sandbox Code Playgroud)

错误CS0161:并非所有代码路径都返回值!

代码可以重构 - 但编译器不建议这样做.然而,所有返回路径都被覆盖 - 那么为什么编译器会抱怨它们不是?

编辑:我想这里的结论是:

(error CS0161) + (all code paths obviously return a value) => refactor code.  
Run Code Online (Sandbox Code Playgroud)

一旦你养成了翻译的习惯,我想一切都还可以.

c# compiler-construction compiler-errors

2
推荐指数
2
解决办法
3362
查看次数

LINQ从一个集合中删除与基于字段的另一个集合中的元素不匹配的元素

我有2个不同对象的列表,例如列表和列表.我想删除第一个列表中的所有对象,其中字段的值与第二个列表中的字段值不匹配.
例如,我想从第一个列表中删除所有Type1对象,其中Type1.name(string)成员与第二个列表中的Type2.id(字符串)成员不匹配.
LINQ可以实现吗?

c# linq collections

1
推荐指数
1
解决办法
3461
查看次数

如何确定C#中的最高和最低整数?

我想知道如何确定用户输入的任何数字中的最高数字和最低数字.我们应该在用户输入99后显示那些.我发现的一切都是使用数组,我们还没有学到这些.请帮忙!

        string input;
        int input2;
        Console.WriteLine("Enter an integer");
        input = Console.ReadLine();
        input2 = Convert.ToInt32(input);


        while (input2 != 99)
        {
            Console.WriteLine("Enter an integer");
            input = Console.ReadLine();
            input2 = Convert.ToInt32(input);
        }
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
2306
查看次数