123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- using PTMedicalInsurance;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using static HaErBinMI.Forms.ToRecord.Helper.DropHelper;
- namespace WinFrom1
- {
- public partial class ModelFrom : Form
- {
- public ModelFrom()
- {
- InitializeComponent();
- }
-
- private void ModelFrom_SizeChanged(object sender, EventArgs e)
- {
- if (this.WindowState != FormWindowState.Maximized)
- {
- //MessageBox.Show("还原");
- //buttonMax.BackgroundImage = Resources.最大化;
- }
- }
- private void ModelFrom_Load(object sender, EventArgs e)
- {
- //窗体居中
- this.Left = Screen.PrimaryScreen.WorkingArea.Width / 2 - this.Width / 2;//桌面的宽度的一半减去自身宽的的一半
- this.Top = Screen.PrimaryScreen.WorkingArea.Height / 2 - this.Height / 2;//桌面的高度的一半减去自身高度的一半
- #region 窗体自适应调用
- this.Resize += new EventHandler(FormResize);
- X = this.Width;
- Y = this.Height;
- SetConSize(this);
- FormResize(new object(), new EventArgs());
- #endregion
- #region 双缓冲
- this.DoubleBuffered = true;//设置本窗体
- SetStyle(ControlStyles.UserPaint, true);
- SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
- SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
- //SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
- //UpdateStyles();
- #endregion
- }
- #region 窗体及控件自适应
- private float X;
- private float Y;
- private void SetConSize(Control cons)
- {
- foreach (Control con in cons.Controls)
- {
- con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
- if (con.Controls.Count > 0)
- SetConSize(con);
- }
- }
- private void setControls(float newx, float newy, Control cons)
- {
- foreach (Control con in cons.Controls)
- {
- string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
- float a = Convert.ToSingle(mytag[0]) * newx;
- con.Width = (int)a;
- a = Convert.ToSingle(mytag[1]) * newy;
- con.Height = (int)(a);
- a = Convert.ToSingle(mytag[2]) * newx;
- con.Left = (int)(a);
- a = Convert.ToSingle(mytag[3]) * newy;
- con.Top = (int)(a);
- Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy);
- con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
- if (con.Controls.Count > 0)
- {
- setControls(newx, newy, con);
- }
- }
- }
- private void FormResize(object sender, EventArgs e)
- {
- float newx = (this.Width) / X;
- float newy = this.Height / Y;
- setControls(newx, newy, this);
- //this.Text = this.Width.ToString() + " " + this.Height.ToString();
- }
- #endregion
- #region 减少窗体变化带来的频闪
- //protected override CreateParams CreateParams //防止界面闪烁
- //{
- // //get
- // //{
- // // CreateParams paras = base.CreateParams;
- // // paras.ExStyle |= 0x02000000;
- // // return paras;
- // //}
- // get
- // {
- // const int CS_NOCLOSE = 0x200;
- // CreateParams cp = base.CreateParams;
- // cp.ClassStyle = cp.ClassStyle | CS_NOCLOSE;
- // cp.ExStyle |= 0x02000000;
- // return cp;
- // }
- //}
- protected override CreateParams CreateParams
- {
- get
- {
- CreateParams cp = base.CreateParams;
- //const int CS_NOCLOSE = 0x200; //禁用窗体关闭按钮
- //cp.ClassStyle = cp.ClassStyle | CS_NOCLOSE;
- if (!DesignMode)
- {
- cp.ExStyle |= 0x02000000;
- return cp;
- }
- return cp;
- }
- }
- //protected override void WndProc(ref Message m)
- //{
- // if (m.Msg == 0x0014) // 禁掉清除背景消息
- // return;
- // base.WndProc(ref m);
- //}
- #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);
- private void menuStrip1_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Clicks == 1)
- {
- //窗体移动
- if (e.Button == MouseButtons.Left)
- {
- ReleaseCapture(); //释放鼠标捕捉
- //发送左键点击的消息至该窗体(标题栏)
- SendMessage(this.Handle, 0xA1, 0x02, 0);
- }
- }
- }
- //窗体缩放
- const int HTLEFT = 10;
- const int HTRIGHT = 11;
- const int HTTOP = 12;
- const int HTTOPLEFT = 13;
- const int HTTOPRIGHT = 14;
- const int HTBOTTOM = 15;
- const int HTBOTTOMLEFT = 0x10;
- const int HTBOTTOMRIGHT = 17;
- protected override void WndProc(ref Message m)
- {
- switch (m.Msg)
- {
- case 0x0084:
- base.WndProc(ref m);
- Point vPoint = new Point((int)m.LParam & 0xFFFF,
- (int)m.LParam >> 16 & 0xFFFF);
- vPoint = PointToClient(vPoint);
- if (this.WindowState != FormWindowState.Normal)
- break; //源代码在窗体最大化状态下,鼠标移到窗口边缘也会出现拖动标识,添加这句代码可以避免
- if (vPoint.X <= 5)
- if (vPoint.Y <= 5)
- m.Result = (IntPtr)HTTOPLEFT;
- else if (vPoint.Y >= ClientSize.Height - 5)
- m.Result = (IntPtr)HTBOTTOMLEFT;
- else m.Result = (IntPtr)HTLEFT;
- else if (vPoint.X >= ClientSize.Width - 5)
- if (vPoint.Y <= 5)
- m.Result = (IntPtr)HTTOPRIGHT;
- else if (vPoint.Y >= ClientSize.Height - 5)
- m.Result = (IntPtr)HTBOTTOMRIGHT;
- else m.Result = (IntPtr)HTRIGHT;
- else if (vPoint.Y <= 2)
- m.Result = (IntPtr)HTTOP;
- else if (vPoint.Y >= ClientSize.Height - 5)
- m.Result = (IntPtr)HTBOTTOM;
- break;
- default:
- base.WndProc(ref m);
- break;
- }
- }
- #endregion
- #region 下拉框自动选择
- /// <summary>
- /// 下拉框自动选择
- /// </summary>
- /// <param name="data">数据源(字典)</param>
- /// <param name="comBox">框体</param>
- public void ComBoxChoose(Dictionary<string, string> data, ComboBox comBox,bool drop)
- {
- comBox.Items.Clear();
- List<ComboBoxItem> temp = new List<ComboBoxItem>();
- foreach (var item in data)
- {
- //循环添加数据源
- if (item.Value.Contains(comBox.Text))
- {
- ComboBoxItem com = new ComboBoxItem();
- com.Text = item.Value;
- com.Value = item.Key;
- temp.Add(com);
- }
- }
- if (temp.Count < 1)
- {
- //输入参数未找到时添加空白选择
- ComboBoxItem zero = new ComboBoxItem();
- zero.Text = "";
- zero.Value = "";
- temp.Add(zero);
- }
- try
- {
- comBox.Items.AddRange(temp.ToArray());
- comBox.SelectionStart = comBox.Text.Length; //更新索引
- Cursor = Cursors.Default; //设置光标
- if (drop)
- {
- comBox.DroppedDown = true; //自动弹出下拉框
- }
- }
- catch (Exception ee)
- {
- comBox.SelectedIndex = -1;
- }
- }
- #endregion
- }
- }
|