FindForm和WPF
我有一个包含WinFormmyForm的应用程序 在该WinForm中有一个WPF UserControlmyWPF 在该WPF UserControl中有一个WinForm UserControlmyWinCtrl myWinCtrl有一个自定义WinGridmyWinGrid myWinGrid在内部执行this.FindForm和。。。。找不到我的表单 有没有一种方法可以覆盖FindForm方法,以便它包含WPF中间层的可能性FindForm和WPF,wpf,winforms,Wpf,Winforms,我有一个包含WinFormmyForm的应用程序 在该WinForm中有一个WPF UserControlmyWPF 在该WPF UserControl中有一个WinForm UserControlmyWinCtrl myWinCtrl有一个自定义WinGridmyWinGrid myWinGrid在内部执行this.FindForm和。。。。找不到我的表单 有没有一种方法可以覆盖FindForm方法,以便它包含WPF中间层的可能性 因此,我需要myGrid查找myWinForm,您可以使用PI
因此,我需要myGrid查找myWinForm,您可以使用PInvoke直接获取包含控件的顶级表单 此时,您可以将生成的IntPtr与Application.OpenForms的每个表单中的句柄进行比较,以找到实际的Windows表单实例
一种可能的暴力方法是使用控制中心,然后搜索Application.OpenForms以查找包含该点的任何活动表单。棘手的部分是处理重叠表单,但只有一个表单应该是活动的,因此如果这是对UI操作的响应,则该位置的活动表单应该是正确的表单…您可以使用PInvoke with直接获取包含控件的顶级表单 此时,您可以将生成的IntPtr与Application.OpenForms的每个表单中的句柄进行比较,以找到实际的Windows表单实例
一种可能的暴力方法是使用控制中心,然后搜索Application.OpenForms以查找包含该点的任何活动表单。棘手的部分是处理重叠的表单,但只有一个表单应该是活动的,因此如果这是对UI操作的响应,则该位置的活动表单应该是正确的表单…效果不太好。。。GetAncenstor返回IntPtr,但这不是一个好的…,System.Windows.Forms.Integration.WindowsFormsHost也没有处理程序property@JamieKeeling:GetControlthisIntPtr至少应该是一个表单。效果不是很好。。。GetAncenstor返回IntPtr,但这不是一个好的…,System.Windows.Forms.Integration.WindowsFormsHost也没有处理程序property@JamieKeeling:GetControlthisIntPtr至少应该是一个表单。
myGrid => myWinFormUC => Host => WpfUC => Host => myWinForm