解决WM设计时窗体继承显示不出来控件的问题

将此文件添加到工程里即可:DesignTimeAttributes.xmta

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
<Class Name="Namespace.FrmBase">
<DesktopCompatible>true</DesktopCompatible>
</Class>
</Classes>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以在WinForm中创建一个继承自Form的新窗体类,然后设置它的属性以实现不占用焦点、不允许输入、仅允许插件的窗体。以下是一个示例代码: ```c# public class PluginForm : Form { public PluginForm() { this.FormBorderStyle = FormBorderStyle.None; // 设置为无边框窗体 this.TopMost = true; // 设置为始终在最顶层 this.ShowInTaskbar = false; // 不在任务栏中显示 this.StartPosition = FormStartPosition.Manual; // 手动设置位置 this.Location = new Point(0, 0); // 将窗体移到屏幕左上角 this.Width = Screen.PrimaryScreen.WorkingArea.Width; // 设置窗体宽度为屏幕宽度 this.Height = Screen.PrimaryScreen.WorkingArea.Height; // 设置窗体高度为屏幕高度 this.BackColor = Color.Black; // 设置窗体背景颜色为黑色 this.Opacity = 0.5; // 设置窗体透明度为50% this.AllowTransparency = true; // 允许窗体透明 this.ControlBox = false; // 不显示控制按钮(最小化、最大化、关闭) this.MinimizeBox = false; // 不允许最小化 this.MaximizeBox = false; // 不允许最大化 this.ShowIcon = false; // 不显示图标 this.Enabled = false; // 禁用窗体 } protected override void WndProc(ref Message m) { const int WM_NCHITTEST = 0x84; // 鼠标消息:窗口非客户区被点击 const int HTTRANSPARENT = (-1); // 鼠标事件被传递到下一层窗口 if (m.Msg == WM_NCHITTEST) { m.Result = (IntPtr)HTTRANSPARENT; return; } base.WndProc(ref m); } } ``` 在上面的代码中,我们重写了WndProc方法,以处理鼠标事件。当鼠标在窗口的非客户区(即边框和标题栏)被点击,我们将消息传递到下一层窗口,以实现不占用焦点的效果。 使用该类创建的窗体将是一个半透明、不可交互、不占用焦点的窗体,仅用于显示插件内容。你可以将插件内容添加到该窗体中,或者在该窗体上放置一个容器控件,然后在其中添加插件内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值