我有一个C#.NET 2.0 WinForms应用程序.我的应用程序有一个控件,它是两个子控件的容器:标签和某种编辑控件.您可以这样想,外框是父控件:
+---------------------------------+ | [Label Control] [Edit Control] | +---------------------------------+
我试图在鼠标进入或离开父控件时执行某些操作,但我不在乎鼠标是否移动到其中一个子控件中.我想要一个标志来表示"鼠标在父或子的内部"和"鼠标移动到父控件边界之外".
我已尝试在父控件和两个子控件上处理MouseEnter和MouseLeave,但这意味着当鼠标在控件上移动时,操作会多次开始和结束.换句话说,我明白了:
Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop) Child.OnMouseEnter (start doing something) Child.OnMouseLeave (stop) Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop)
中间的OnMouseLeave事件会导致一些不良影响,因为我正在做的事情开始然后停止.我想避免这种情况.
我不想捕获鼠标,因为父控件需要鼠标移动,因为子控件需要鼠标事件,我想要菜单和其他快捷键才能工作.
有没有办法在.NET框架内执行此操作?或者我需要使用Windows鼠标挂钩?
我想在Windows窗体应用程序中模拟"Web 2.0"灯箱样式UI技术.也就是说,通过"调暗"窗口的客户区域中的所有其他内容来引起对某些前景控制的注意.
显而易见的解决方案是创建一个控件,它只是一个部分透明的矩形,可以停靠在窗口的客户区域并带到Z-Order的前面.它需要像玻璃一样肮脏的疼痛,通过它可以看到其他控件(因此继续自己画).这可能吗?
我有一个很好的打猎,并尝试了一些技术,但到目前为止一直没有成功.如果不可能,那么另一种方法是什么呢?
请参阅:http://www.useit.com/alertbox/application-design.html(在Lightbox部分下面的屏幕截图来说明我的意思.)
我正在尝试使用具有圆角的用户控件.它没有固定的大小,但通常宽度不超过120像素.
我需要用户控件及其内容(标签和表格)具有圆形边缘,看起来像一个圆形框.
我用过这段代码.
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn
(
int nLeftRect, // x-coordinate of upper-left corner
int nTopRect, // y-coordinate of upper-left corner
int nRightRect, // x-coordinate of lower-right corner
int nBottomRect, // y-coordinate of lower-right corner
int nWidthEllipse, // height of ellipse
int nHeightEllipse // width of ellipse
);
public static System.Drawing.Region GetRoundedRegion(int controlWidth, int controlHeight)
{
return System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, controlWidth - 5, controlHeight - 5, 20, 20));
}
Run Code Online (Sandbox Code Playgroud)
这给控件圆角但是在它运行了几次之后我已经将多个用户控件添加到表单中它将导致泄漏,我将在我的用户控件上获得带有红叉的白盒.
有没有更好的方法呢?
在 Windows 窗体技术下,我正在继承Form类并覆盖OnControlAdded事件调用器,我的意图是添加到我的窗体的控件集合中的每个控件都将其Control.BackColor属性设置为Color.Transparentvalue,而不管控件的默认颜色继承已添加到我的表单中。
但是,您可能知道,某些控件(例如ListView不接受透明度)以及在尝试设置Color.Transparent值时,System.ArgumentException会抛出 a 告诉您可以设置透明颜色。
那么,我的问题是:
在 C# 或 VB.NET 中,这将是在运行时确定控件是否允许透明背景颜色 ( Color.Transparent)的正确方法(可能使用反射,或者可能调用 Win32 函数)?...而不是处理指定的异常或switch例如,对案例中的控制类型进行分类。
我在Windows窗体用户控件中创建了一个简单的操作员(由单选按钮和三个标签以及一个进度条组成).
我将新用户控件的背景颜色设置为透明,这样当我将它拖到我的表单上时,它会与表单上的其他颜色和绘图混合.我没有得到我想要实现的目标.
这是图片:
