如果我们有
<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)
是否工作即在预览事件后调用 - 有人可以解释为什么需要这种不太明显的语法吗?
我有一个类似的问题,在这个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) 为什么在如下代码中.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)
一旦你养成了翻译的习惯,我想一切都还可以.
我有2个不同对象的列表,例如列表和列表.我想删除第一个列表中的所有对象,其中字段的值与第二个列表中的字段值不匹配.
例如,我想从第一个列表中删除所有Type1对象,其中Type1.name(string)成员与第二个列表中的Type2.id(字符串)成员不匹配.
LINQ可以实现吗?
我想知道如何确定用户输入的任何数字中的最高数字和最低数字.我们应该在用户输入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)