C#一些有用的东西

杂:

1.自定义控件public属性如何不在InitializeComponent中生成?

可以使用特性:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

 

2.在一些无法在窗体内捕获的事件可以使用IMessageFilter接口来实现。

Application.AddMessageFilter 注册事件

Application.RemoveMessageFilter 取消事件

 

3.Form.ActiveForm静态属性用来获取当前激活的窗口。可以用来判断程序时候是激活状态的。

 

4. Control.PointToScreen用来获取在屏幕中的坐标。

Control.PointToClient用来获取在控件中的坐标。

Control.MousePosition用来获取鼠标在屏幕上的坐标。

上面3个组合可以用来做一些复杂的控件交互。

 

5. Controls.GetChildIndex,Controls.SetChildIndex可以用来改变控件布局。

 

6. 该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄。

[DllImport("user32.dll")]

public static extern IntPtrGetWindow(IntPtr hWnd, uint wCmd);

可以实现一些窗体上的交互。

 

7.xml序列化反序列化对象:

publicstaticstringSerializeXML<T>(T obj)

{

using (StringWriterwriter=newStringWriter())

{

newXmlSerializer(obj.GetType()).Serialize((TextWriter)writer, obj);

returnwriter.ToString();

}

}

 

publicstatic T DeserializeXML<T>(stringxmlObj)

{

XmlSerializerserializer=newXmlSerializer(typeof(T))

using (StringReaderreader=newStringReader(xmlObj))

{

return (T)serializer.Deserialize(reader);

}

}

8.ApplicationContext类,可以实现支持多个主窗体。

Ps:如果创建的窗体中有一个实现closing方法中e.cancel=true;会导致Application.Exit();也无法关闭进程。

绘图相关:

1.      Control. Region属性用来限定控件的形状。可以用来绘制异型控件。

 

2.      控件内部操作图片解决闪烁问题

protected override void OnPaintBackground(PaintEventArgse) {return;}

protected override voidOnPaint(PaintEventArgs e)

{

    this.DoubleBuffered = true;

    if(this.BackgroundImage != null)

    {

        e.Graphics.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;

       e.Graphics.DrawImage(this.BackgroundImage,

new System.Drawing.Rectangle(0, 0, this.Width, this.Height),

                           0, 0, this.BackgroundImage.Width,

 this.BackgroundImage.Height,

                           System.Drawing.GraphicsUnit.Pixel);

    }

    base.OnPaint(e);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值