c#开发-基础知识及有用技巧(一)

添加人:admin三级(1328分)   添加时间:2007-07-04    阅读次数:7301  收藏此教程
1、时间长度的计算 TimeSpan类。
   例如:TimeSpan span = dateTime1 - dateTime2   方便啊
2、从类(Class)返回一个System.Type类型,用typeof关键字
3、从一个对象实例(Object)返回一个System.Type类型,用GetType方法
4、判断是否处于设计状态:DesignMode属性
5、根据GUID创建对象实例
System.Guid pGuid = new Guid(guid);
System.Type ObjectCustorm = Type.GetTypeFromCLSID(pGuid);
Object obj = Activator.CreateInstance(ObjectCustorm);
6、GDI+不支持xor绘制模式的近似解决方法:
ControlPaint.DrawReversibleFrame、ControlPaint.DrawReversibleLine方法
7、获取Enum类型中的所有枚举值:
  Enum.GetNames方法
 将字符串转换成枚举值
  Enum.Parse方法
8、Label放在图片上时,使Label透明
picLogo.Controls.Add(lblStatus);
lblStatus.BackColor = Color.Transparent;
9、调用帮助文件
打开帮助文件
Help.ShowHelp(this,@"c:/windows/help/mspaint.chm");

打开帮助文件,并跳转到指定的主题
Help.ShowHelp(this,@"c:/windows/help/mspaint.chm","paint_lines.htm");

打开帮助文件,并转到“索引”选项卡
Help.ShowHelpIndex(this,@"c:/windows/help/mspaint.chm","paint_lines.htm");

在屏幕上显示一条浮动的帮助信息
Help.ShowPopup(this,"这里是帮助信息",new Point(100,100));

10、通过AppDomain在应用程序之间传递数据
例如,两个系统可能会共用登录信息,登录一个系统后,再启动另一个系统时,不需要重新登录。
先定义一个在应用程序之间传递的数据的类,该类必须从MarshalByRefObject继承:

/**//// <summary>
/// 用于在不同的appdomain之间传递参数
/// </summary>
public class AppDomainInfo:MarshalByRefObject
{
    public int UserID;
}
然后可以这样打开新的应用程序
AppDomainSetup setup = new AppDomainSetup();
            setup.ApplicationName = "测试程序";
            AppDomain appDomain = AppDomain.CreateDomain("TestDomain", null, setup);

            AppDomainInfo domainInfo = new AppDomainInfo();
            domainInfo.UserID = Winsharp.BaseClass.AppConfigInfo.UserID;
            appDomain.SetData("domainInfo",domainInfo);

            object obj = appDomain.CreateInstanceFromAndUnwrap(str,"TestDomain.Test");
            (obj as Form).Show();

11、换行字符串,相当于"\r\n",Environment.NewLine
 
     API中有GetTickCount函数,C#中为Environment.TickCount

12、取得安装操作系统输入的用户姓名和公司名称:
Microsoft.Win32.RegistryKey cmicRegKey=Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software");
   cmicRegKey=cmicRegKey.OpenSubKey("Microsoft");
cmicRegKey=cmicRegKey.OpenSubKey("MS Setup (ACME)");
cmicRegKey=cmicRegKey.OpenSubKey("User Info");
object cmicCompany = cmicRegKey.GetValue("DefCompany");
object cmicUser = cmicRegKey.GetValue("DefName");

13、C# WinForm 捕获最小化事件(来自Limon Tea的随笔http://limon7.cnblogs.com/archive/2006/07/23/457865.html)
 虽然Form类没有提供Minimize的事件,但还是可以通过重载Deactive来实现
当Form失去焦点后,测试WindowState取得Form状态,若为Minimized既是最小化事件。
本例为最小化后隐藏窗口:
private void Form1_Deactivate(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
        this.Visible = false;
}
还有种方法更加直接,重载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)
        {
            this.Visible = false;
            return;
        }
    }
    base.WndProc(ref m);
}
4页 第1上一页1234下一页
相关的教程: CSharp 技巧 基础知识
收藏此教程

当前平均分: 5.0(1 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: