C# Winform中如何将一个应用程序显示在Panel中?

xiaowunai 2010-03-02 07:08:54
请教一下,如题,知道这个应用程序的句柄,怎么把它嵌到WinForm中的Panel控件中呢?这个应用程序是我启动的软件程序,不是Form,谢谢~~~
...全文
501 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaowunai 2010-03-02
  • 打赏
  • 举报
回复
嗯,谢谢你!可以了~但是如果我不想让这个应用程序在panel2中移动,即固定在panel中,该怎么办呢?
xingyuebuyu 2010-03-02
  • 打赏
  • 举报
回复
public IntPtr pp =IntPtr.Zero;
在Form1_Load方法里面的最后在进行赋值就好了;
pp = panel2->Handle;

如果像你那样写,那么窗体还没创建出来,这时上面的控件也都没创建出来,就会先执行你写的这句代码,
panel2还没创建出来也就不会有Handle产生了,这时调用就 报错了。
xiaowunai 2010-03-02
  • 打赏
  • 举报
回复
引用 3 楼 xingyuebuyu 的回复:
  [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "SetParent")]
        public static extern System.IntPtr SetParent( System.IntPtr hWndChild, System.IntPtr hWndNewParent);

第一个参数是你要显示的窗体的句柄,第二参数你设为Panel的句柄

谢谢~我是一个初学者,再请教一下我程序中的panel2的句柄该怎么获得呢?我写public IntPtr pp = panel2->Handle;报错。。
wuyq11 2010-03-02
  • 打赏
  • 举报
回复
Form1 f = new Form1();
f.TopLevel = false;
panel1.Controls.Add(f);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);
xingyuebuyu 2010-03-02
  • 打赏
  • 举报
回复
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "SetParent")]
public static extern System.IntPtr SetParent( System.IntPtr hWndChild, System.IntPtr hWndNewParent);

第一个参数是你要显示的窗体的句柄,第二参数你设为Panel的句柄
xiaowunai 2010-03-02
  • 打赏
  • 举报
回复
引用 1 楼 lijunfeng 的回复:
用FindWindowEx获取启动的程序主窗体句柄,然后用SetParent将其父设为Panel

怎么把Panel设为其父呢?SetParent不是需要两个窗口的句柄吗?
lijunfeng 2010-03-02
  • 打赏
  • 举报
回复
用FindWindowEx获取启动的程序主窗体句柄,然后用SetParent将其父设为Panel

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧