winform下拉框篇.类似Word的颜色下拉框

更新时间:2023-07-14 04:05:54 阅读: 评论:0

winform下拉框篇.类似Word的颜⾊下拉框
实现功能:
1)下拉出颜⾊选取对话框.
2)后台窗⼝不失去焦点.
3)点击更多调⽤windows标准颜⾊选取对话框选取颜⾊.
开发背景:
在⽹上看到⼀些⽂章可以基本实现这些功能、但是⼤多使⽤前台窗⼝获得焦点后在迅速把焦点
转移到后台窗⼝的⽅法、或是将前台窗⼝ Show 出通过使去焦点来关闭前台窗⼝,或者⼲脆⽤个控件(⽤普通的控件如果如果范围超出后台窗⼝的范围就会被窗⼝遮挡)
⽽Windows内置的菜单或下拉框都不会出现使、前台窗⼝触发失去焦点事件的事件、更不会被遮挡、抱着⼀个程序员执著的信念、在csdn 论坛连发数贴(400 分啊)在加上不断的努⼒终于有所曾就。成于乐
在此感谢 csdn 的各位同僚朋友,没有你们就没有这个世界(哈)。
废话不多说了、进⼊正题。
程序实现代码解析:
1)⽂章所⽤到的基础Windows API 类。
using System;
using System.Runtime.InteropServices;
/// <summary>
/// 系统调⽤,都是Windows API 相关 注视的地⽅也许⼤家有⽤没有删除,具体说明情察看msdn
/// </summary>
public class SystemShell
{
public const int GWL_STYLE = -16;
/
/public const int GWL_EXSTYLE = -20;
//public const int WS_VISIBLE =0x10000000;
public const int WS_CHILDWINDOW = 0x40000000;
//public const int WS_CLIPSIBLINGS = 0x04000000;
//public const int WS_CLIPCHILDREN = 0x02000000;
//public const int WS_BORDER = 0x00800000;
//public const long WS_THICKFRAME = 0x00040000;
//public const long WS_OVERLAPPED = 0x00000000;
不知疲倦//public const long WS_DLGFRAME = 0x00400000;
//public const long WS_EX_TOOLWINDOW = 0x00000080;
历史地名
//public const int WM_NCPAINT = 0x0085;
public const int WM_ACTIVATEAPP = 0x001C;
//public const int WM_ERASEBKGND = 0x0014;
[DllImport("ur32.dll", CharSet=CharSet.Auto)]
public static extern long SetWindowLong(IntPtr hWnd, int nIndex, long dwNewLong);
[DllImport("ur32.dll", CharSet=CharSet.Auto)]
public static extern long GetWindowLong( IntPtr hWnd,int nIndex);
思念歌曲//[DllImport("ur32.dll", CharSet=CharSet.Auto)]
//public static extern int SendMessage(IntPtr hWnd , int msg , int wParam ,int lParam );
//[DllImport("ur32.dll", CharSet=CharSet.Auto)]
//public static extern int GetWindowRect (IntPtr hWnd , ref System.Drawing.Rectangle lpRect);
private SystemShell()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
本⽂章弹出窗⼝的基类(代码处理流程情根据标号浏览)
/// <summary>
/// NoActForm 实现弹出窗⼝的基类。
/// </summary>
public class NoActForm : System.Windows.Forms.Form
移动cpu天梯图
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public NoActForm():ba()
{
//
// Windows 窗体设计器⽀持所必需的
//
InitializeComponent();
}
/
// <summary>
/// 清理所有正在使⽤的资源。
/// </summary>
protected override void Dispo( bool disposing ) {
if( disposing )
{
if(components != null)
{
components.Dispo();
}
}
ba.Dispo( disposing );
}
#region Windows 窗体设计器⽣成的代码
/// <summary>
/// 设计器⽀持所需的⽅法 - 不要使⽤代码编辑器修改 /// 此⽅法的内容。
/// </summary>
private void InitializeComponent()
{
//
// NoActForm
//
马家塬遗址this.AutoScaleBaSize = new System.Drawing.Size(6, 14);
黑豆孕妇能吃吗
this.ClientSize = new System.Drawing.Size(292, 273);
//(1)不要标题图标 和 Text 属性,
梦见自己穿裙子this.ControlBox = fal;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Name = "NoActForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Load += new System.EventHandler(this.NoActForm_Load);
}
#endregion
private void NoActForm_Load(object nder, System.EventArgs e)
{
//如果不是在设计模式
if (!this.DesignMode)
{
//没有 Owner 是不⾏的
if (this.Owner == null)
{
throw new ApplicationException("not Owner Form");
}
this.ShowInTaskbar =fal;
//(2)关键在这⾥任何窗⼝⼦要加上 WS_CHILDWINDOW 样式即可
long Style = SystemShell.GetWindowLong(this.Handle,SystemShell.GWL_STYLE); Style |= SystemShell.WS_CHILDWINDOW;

本文发布于:2023-07-14 04:05:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1080722.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:没有   焦点   代码   基类
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图