我有一个带有(异步)工具窗口的Visual Studio扩展。工具窗口中有一个UserControl
,控件中有一个Image
,我使用WriteableBitmap
作为源。基本上,我试图在工具窗口上使用图形API(Vulkan)。
基本上,我的扩展程序看起来类似于Visual Studio的3d模型编辑器。
我的问题是,当我单击工具窗口时,没有像MouseLeftButtonDown
或PreprocessMouseLeftButtonDown
这样的鼠标事件处理程序被调用。我曾尝试向UserControl
,Image
甚至HwndHost
添加鼠标事件处理程序,但没有成功。
[我知道IMouseProcessor
或其他变体,但在我看来,它们用于文本编辑器,而不仅仅是工具窗口窗格或用户控件。
HwndHost
的WndProc
方法似乎也不接收任何鼠标事件。通过替换父Hwnd的WndProc来简单地“简化”它似乎可行,但是我不想创建一个扩展来控制整个Visual Studio。]
==编辑==
public partial class MyControl : UserControl { public MyControl () { InitializeComponents (); MouseLeftButtonDown += MyLeftButtonDown; } ... private void MyLeftButtonDown (object sender, MouseButtonEventArgs e) { // This code never gets executed. } }
也不是这些。
<UserControl ... IsHitTestVisible="True" MouseLeftButtonDown="MyLeftButtonDown "> <Image x:Name="View" ... /> <!--- nor this ---> <!--- <Image x:Name="View" MouseLeftButtonDown="MyLeftButtonDown " /> ---> </UserControl>
这也不起作用。
public partial class MyControl : UserControl {
public MyControl () {
InitializeComponents ();
// View is an object of Image class.
View.MouseLeftButtonDown += MyLeftButtonDown;
}
...
private void MyLeftButtonDown (object sender, MouseButtonEventArgs e) {
// This code never gets executed.
}
}
我有一个带有(异步)工具窗口的Visual Studio扩展。工具窗口中有一个UserControl,控件中有一个Image,我使用WriteableBitmap作为源。基本上,我正在尝试使用...
我还没有弄清楚如何用Image
或UserControl
处理鼠标输入,但是我想出了HwndHost
的鼠标输入。