C# WindForm Note-I

来源:互联网 发布:linux sed编辑文件命令 编辑:程序博客网 时间:2024/04/28 00:59

--------------------------------------------

★ 通过重写窗口过程函数(WndProc)函数,截取窗体消息,如最大.最小化等

        const int WM_SYSCOMMAND = 0x112;
        const int SC_CLOSE = 0xF060;
        const int SC_MINIMIZE = 0xF020;
        const int SC_MAXIMIZE = 0xF030;
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_SYSCOMMAND)
            {
                if (m.WParam.ToInt32() == SC_MINIMIZE)
                {
                    MessageBox.Show("最小化!1");
                }
                if (m.WParam.ToInt32() == SC_MAXIMIZE)
                {
                    MessageBox.Show("最大化!1");
                }
                if (m.WParam.ToInt32() ==0xF120)
                {
                    MessageBox.Show("还原!1");
                }
            }
            base.WndProc(ref m);
        }

--------------------------------------------
★C#实现MDI 多文档界面 应用程序:
主窗体Form_Main:将其IsMdiContainer设定成true,这样MDI主窗体就建立了.
子窗体Form_Child属性:
设置Form_Main它的MDI父窗体:Form_Child.MdiParent=this;

--------------------------------------------
★设置窗体鼠标-形状
this.Cursor = Cursors.属性
★监视鼠标-状态
Button.MouseButtons == MouseButtons.属性

----------------------
★设置控件的透明色
Control.Parent=ParentControl(父控件);
Control.BackColor=Color.Transparent;
----------------------
★字体设置(listViewEx为例)
//FontStyle Fs=FontStyle.Regular;GraphicsUnit Gh=GraphicsUnit.Point;
   listViewEx1.Font = new Font("宋体", 9, FontStyle.Regular,

GraphicsUnit.Point);//Font.Unit
----------------------
★合理的管理控件(释放/创建)
control.IsDisposed  控件是否释放
control.Created 控件是否创建并show()
判断窗体是否已经打开:
if (client_Fm == null || client_Fm.IsDisposed)//Client_Form:窗体
            {
                client_Fm = new Client_Form();
                client_Fm.Show();
            }
            else
                client_Fm.Activate();
--------------------------------------------
★绘制UI
e.Graphics.DrawString()字
e.Graphics.DrawLines() 线
e.Graphics.DrawRectangle()方
e.Graphics.DrawImage() image
PaintEventArgs 类: 为 Paint 事件提供数据。
Rectangle 类:  绘制一个矩形。
PaintEventArgs.Graphics.DrawImage: 在指定位置并且按指定大小绘制指定的

Image 的指定部分。
PaintEventArgs..::.ClipRectangle:  获取要在其中进行绘画的矩形
--------------------------------------------
★Form添加背景图片
this.BackgroundImage = imageList1.Images[Index];
再把BackgroundImageLayout属性改为:Stretch
这样在界面上显示的图片就不是小图标了,是大图片

--------------------------------------------
★窗体全屏显示:另外就是调用API函数
WindowState= FormWindowState.Maximized;
FormBorderStyle=FormBorderStyle.None;//此并非真正的全屏
--------------------------------------------
★获取COMBOX指定索引  cb_Name.SelectedIndex = n;//适合用于其它datagridview等

控件
--------------------------------------------
★设置控件焦点:control.fouts();
--------------------------------------------
★设置窗体不让用户改变大小
把窗体的FormBorderStyle属性设为FormBorderStyle.FixedSingle;
--------------------------------------------
★设置Form窗体的特征“
 i , StartPosition 窗体第一次出现的位置:如CenterScreen当前窗口居中,

CenterParent为父窗口中心位置。
 ii ,FormBorderStyle 指示窗体的边框和标题栏的外观和行为:如None 为无标题栏格

式。
 iii,属性Font设置显示控件中的文本的字体;属性CaptionFont 设置标题栏字体,
--------------------------------------------
★frm.ShowDialog()//有模式窗体
  frmAbout.Show()//无模式窗体
--------------------------------------------
★键盘,鼠标事件
鼠标事件:"MouseHover"、"MouseLeave"、"MouseEnter"、"MouseMove"、"MouseDown"

和"MouseUp"。
例--MouseDown 鼠标按钮按下事件
e.Button == MouseButtons.Left  左按下 
e.Button == MouseButtons.Right 右按下
键盘事件:"KeyDown"、"KeyUp"和"KeyPress"。
 先 声明:  "组件名称"."事件名称"+= new System.EventHandler("事件函数名称"

);
 再 定义:   事件函数····

--------------------------------------------
★Enter控件获取焦点事件中,设置文本全选
textBox1.SelectAll();///textBox1文本全选
textBox1.SelectionStart = 1;/////"1"代表光标在第1个字符之后

form.ActiveControl==control1//判断控件control1是否被选中

--------------------------------------------
★控件(以主窗体Form为例)大小变化时,控件内的子控件安装相应比例缩放
一般使用Anchor/Dock 就可以控制窗体位置和大小,但是这个不能实现控件随窗体缩放比例

自动调整自身大小和位置。所以只能跟踪Resize事件用代码做出相应的调整。
方法代码:

--------------------------------------------
★  windows 开始按钮效果的 Button

--------------------------------------------
将Form添加到主窗体进行显示

不能直接把frm.Parent =父容器,会报出无法将顶级控件添加到控件的错误,解决方案:
因为Form默认是顶级窗体,所以加不上去,可以设置其TopLevel属性为False,代码如下:
frmMain frm = new frmMain();
frm.FormBorderStyle = FormBorderStyle.None;
frm.TopLevel = false;
frm.Parent = panel1;
frm.Show();

--------------------------------------------

--------------------------------------------

--------------------------------------------

--------------------------------------------

--------------------------------------------