DevComponents.DotNetBar2.dll设置样式的使用
有点模仿QQ消息盒子的感觉,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using DevComponents.DotNetBar; namespace BW_ArasSpirit
{
public partial class SystemMsgBox : Form
{
private static SystemMsgBox _initialize = null; public static SystemMsgBox getinstance()
{
if (_initialize == null)
{
_initialize = new SystemMsgBox();
}
return _initialize;
} #region 变量
private bool boolVisible = false;
#endregion #region 拖动无边框窗体
[DllImport("user32.dll")]//*********************拖动无窗体的控件
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
#endregion public SystemMsgBox()
{
InitializeComponent();
} //#region 鼠标Move Hover Leave样式区域
//private void labelShowMsg_MouseMove(object sender, MouseEventArgs e)
//{
// labelShowMsg.ForeColor = Color.FromArgb(50, 50, 50);
//} //private void labelShowMsg_MouseLeave(object sender, EventArgs e)
//{
// labelShowMsg.ForeColor = Color.FromArgb(100, 100, 100);
//}
//#endregion #region 取消窗体关闭事件
private void FormMessage_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
boolVisible = true;
timerShowWindow.Enabled = true;
timerWait.Enabled = false;
}
#endregion #region 窗体关闭
private void btnFormClose_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Close();
}
}
#endregion #region 显示窗体函数
public void ShowWindow(List<Task> wlplist,List<Task> ptasklist)
{
this.Show();
this.Opacity = 0;
boolVisible = false;
timerWait.Interval = 5000;
Point point;
try
{
point = frmSet.point;
}
catch (Exception e)
{
throw e;
}
this.Location = new Point((((point.X+10) + (point.X -10))/2)- (this.Size.Width/2), Screen.PrimaryScreen.Bounds.Height - 40 - this.Size.Height);
timerShowWindow.Enabled = true;
int wlpcount = wlplist.Count;
int pacount = ptasklist.Count;
if (wlpcount == 0)
{
lbltasklist.Text = "项目流任务-" + ptasklist[0].Ptaskname + " (" + ptasklist.Count + ")";
labelXTitle.Text ="消息盒子"+" ("+"1"+")";
}
if (pacount == 0)
{
lblwlplist.Text = "工作流任务-" + wlplist[0].Wlptaskname + " (" + wlplist.Count + ")";
labelXTitle.Text = "消息盒子" + " (" + "1" + ")";
}
if (wlpcount != 0 && pacount != 0)
{
lbltasklist.Text = "项目流任务-" + ptasklist[0].Ptaskname + " (" + ptasklist.Count + ")";
lblwlplist.Text = "工作流任务-" + wlplist[0].Wlptaskname + " (" + wlplist.Count + ")";
labelXTitle.Text = "消息盒子" + " (" + "2" + ")";
}
}
#endregion #region 控制窗体显示
private void timerShowWindow_Tick(object sender, EventArgs e)
{
if (!boolVisible)
{
this.Opacity += 0.1;
if (this.Opacity >= 1)
{
timerShowWindow.Enabled = false;
timerWait.Enabled = false;
boolVisible = false;
}
}
else
{
this.Opacity -= 0.1;
if (this.Opacity == 0)
{
boolVisible = false;
this.Hide();
timerShowWindow.Enabled = false;
timerWait.Enabled = false;
}
}
}
#endregion #region 等待
private void timerWait_Tick(object sender, EventArgs e)
{
timerShowWindow.Enabled = false;
timerWait.Enabled = false;
}
#endregion #region 移动无边框窗体事件
private void labelXTitle_MouseDown(object sender, MouseEventArgs e)
{
//ReleaseCapture();
//SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//*********************调用移动无窗体控件函数
}
#endregion public delegate void MyDelegate(bool istrue);
public event MyDelegate MyEvent;
private void label1_Click(object sender, EventArgs e)
{
try
{
MyEvent(true);
this.Hide();
}
catch (Exception exp)
{
throw exp;
}
} public static bool istrueexit = false;
private void SystemMsgBox_Load(object sender, EventArgs e)
{ } //private void labelXTitle_MouseMove(object sender, MouseEventArgs e)
//{
// labelXTitle.ForeColor = Color.Red;
// labelXTitle.Font = new Font(labelXTitle.Font, FontStyle.Bold | FontStyle.Underline);
//} //private void labelXTitle_MouseLeave(object sender, EventArgs e)
//{
// labelXTitle.ForeColor = Color.White;
// labelXTitle.Font = new Font(labelXTitle.Font, FontStyle.Bold);
//}
}
} mian.cs public SystemMsgBox smb = SystemMsgBox.getinstance();
private void niIcon_MouseDown(object sender, MouseEventArgs e)
{
if (isRun && IsCloseWindow == "0")
{
point = Cursor.Position;
if (!smb.Visible)
{
smb.MyEvent +=new SystemMsgBox.MyDelegate(this.getreturnvalue);
smb.ShowWindow(wlptasklist,ptasklist);
timerpoint.Start();
}
}
} private Point lastpoint;
private void timerpoint_Tick(object sender, EventArgs e)
{
if (lastpoint == null) return;
if (smb.Visible)
{
//定义范围
//起始位置
lastpoint = Cursor.Position;
if (lastpoint.Y > point.Y + 100 || lastpoint.Y < point.Y - 100)
{
//超出高度隐藏
smb.Hide();
timerpoint.Stop();
}
//根据y的范围判定x的取值
int x = (((point.X + 10) + (point.X - 10)) / 2) - (211 / 2);
int y = Screen.PrimaryScreen.Bounds.Height - 40 - 97; //图标的上方,判断窗体的范围
if (lastpoint.Y < y || lastpoint.Y != y)
{
if (lastpoint.X < x || lastpoint.X > x + 211)
{
smb.Hide();
}
}
//图标的下方,判断图标的范围
//if (lastpoint.Y > y || lastpoint.Y != y)
//{
// if (lastpoint.X < x + 211 / 2 - 10 || lastpoint.X > x + 211 / 2 + 10)
// {
// smb.Hide();
// }
//}
}
}
DevComponents.DotNetBar2.dll设置样式的使用的更多相关文章
- [C#]AdvPropertyGrid的使用示例(第三方控件:DevComponents.DotNetBar2.dll)
开发环境:Visual Studio 2019 .NET版本:4.5.2 效果如下: 1.初始化界面: 2.属性“人物”-自定义控件显示: 3.属性“地址”-自定义窗体显示: 4.属性“性别”-枚举显 ...
- DotNetBar 中 SuperGridControl 加载数据、获取数据、设置样式
1.加载数据 构建列 //加载列 GridColumn gd = new GridColumn(); gd.Name = "第1"; gd.HeaderText = "第 ...
- word-wrap&&word-break,奇偶行、列设置样式
1.word-wrap和word-break区分. 来源场景:机械租赁mvc驾驶员信息查看: 当备注的文字多的时候,第一列的值成这模样: 解决方案:设置table 的td可自动换行.首先table设置 ...
- 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式
注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...
- Vue系列: 如何通过组件的属性props设置样式
比如我们要在vue中显示百度地图,然后将相关的代码包装成组件,然后需要由外部来设置组件的高度,关于props的介绍,可以参考: http://cn.vuejs.org/guide/components ...
- 【使用 DOM】为DOM元素设置样式
1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleS ...
- 【温故而知新-Javascript】为DOM元素设置样式
1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleS ...
- 通过JavaScript设置样式和jQuey设置样式,还有随机数抛出水果的习题
一:通过JavaScript的方式设置样式(:拿习题为例): var shuiguo = document.getElementById('fruit'); shuiguo.style.bac ...
- c# Chart设置样式
一.chart属性熟悉 能够对C# chart控件属性熟悉起帮助的code, 现在分享给大家,Chart Operate Demo Code Download,如有帮助,别忘点个赞. Chart ...
随机推荐
- ES6模块化深入 debug
引子: 2020.2.24.最近刚写完一个vue项目.项目用到ES6的模块化 想到之前写node项目用到过commonjs模块化 就想着把所有用到过的模块化技术 总结学习一下 在看阮一峰老师的 es6 ...
- 十、CI框架之通过参数的办法输出URI路径
一.代码如下,index函数有2个参数 二.效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入
依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...
- css代码实现列表等宽
实现上面的手机页面,我们会遇到一个自适应的问题,但是手机页面的屏幕大小不一致,自适应的问题不是百分比可以好好解决的,我采用下面的布局:display:flex; <!DOCTYPE html&g ...
- css 网格线
白色网格线 background: #58a; background-image: linear-gradient(rgba(255,255,255,.3) 1px, transparent 0), ...
- Day 1:线程与进程系列问题(一)
一.进程与线程 进程:正在执行的程序称为一个线程,主要负责内存空间的划分. 线程:线程在一个进程中负责代码的执行,就是进程中的一个执行路径. 多线程:在一个进程中有多个线程同时在执行不同的任务(同时指 ...
- Codeforces 1299B/1300D - Aerodynamic
题目大意: 给定一个图形S,让这个图形任意平移,但是要保证原点(0,0)一直在它的内部或者边上 最后把它能移动到的所有位置进行拼合可以得到一个图形T 问图形S与图形T是否相似 点会按照逆时针顺序给出 ...
- jenkins+saltstack+pipeline 部署springcloud 多模块jar包
在jenkins上安装salt-master, pipeline{ agent{ node{ label 'master' cust ...
- BIOS与UEFI
BIOS BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统".在IBM PC兼容系统上,是 ...
- “帮你”校园资讯平台app使用体验
该app由我的17级学长学姐编写而成,主要功能失物招领,二手市场,表白墙.该软件目前只是面向本校的各专业学生,为内测版本.该软件的注册流程简单,只需要学号确定身份后即可登陆,并且发布各种信息,或者与丢 ...