永远的不倒翁

No pains,No gains!
posts - 9, comments - 15, trackbacks - 0, articles - 1

2007年3月21日

参考了网上一些资料.如下:

private static 窗体 instance = null;
//添加一个属性
public static 窗体 Instance
{
     
set{
     }
     
get{
         
if(instance == null){
             
new 窗体();
         }
         
return instance;
     }
}

在窗体的构造函数中加入如下代码

instance = this;

创建窗体Closed事件

private void 窗体_FormClosed(object sender, FormClosedEventArgs e)
{
    instance 
= null;
}

使用方法:
在要调用该窗体的地方加入如下代码

窗体 myfrm = 窗体.Instance; 
myfrm.Show();
myfrm.Activate();

自己的,如下:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.ComponentModel;

namespace WinForm
{
 /// <summary>
 /// FormManager 的摘要说明。
 /// </summary>
 public class FormManager
 {
  private static Form3 form3=null;
  private static Form2 form2=null;
  private FormManager()
  {
   
  }

  public static Form2 Form2Ins
  {
   get{
    if(form2==null)
    {
     form2=new Form2();
    }
    return form2;
   }
  }

  public static Form3 Form3Ins
  {
   get
   {
    if(form3==null)
    {
     form3=new Form3();
    }
    return form3;
   }
  }
 }
}
窗体的Closed事件里面加上FormManager.Form2Ins=null;

 使用法:
FormManager.Form2Ins.Show()

又一方法,大致同上,只是将关闭的处理交到一个类来处理了.这样,就只需要修改FormManager这个就可以了
private static Form2 form2=null;
  public static Form2 Form2Ins
  {
   get{
    if(form2==null)
    {
     form2=new Form2();
     form2.Closed+=new EventHandler(FormManager.ClosedWindow2);
    }
    return form2;
   }
   set
   {
    form2=value;
   }
  }
  private static void ClosedWindow2(object sender, System.EventArgs e)
  {
   form2=null;
  }
本想把关闭全部写在一个方法里面,看来还要看看委派这里了..请大家多多指点

欢迎大家踊跃拍砖!!!

posted @ 2007-03-21 17:36 永远的不倒翁 阅读(180) 评论(0) 编辑

从web转到winform,还真的不太习惯.
公司选择了这套控件,只有从零开始了,我会把常用的一些方法或者属性记下来,以备后用.也欢迎大家来指教,共同学习.
(注,这里的全是针对此套控件)
1.设定Grid某列为编辑控件,如
private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
        {
            e.Layout.Bands[0].Columns[0].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;         
        }

2.允许某列可以统计
private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
        {
            e.Layout.Bands[0].Columns[0].AllowRowSummaries = Infragistics.Win.UltraWinGrid.AllowRowSummaries.True;
        }

3.程序控制Grid添加行
this.ultraGrid1.DisplayLayout.Override.AllowAddNew = Infragistics.Win.UltraWinGrid.AllowAddNew.FixedAddRowOnTop(或者FixedAddRowOnBottom);

posted @ 2007-03-21 12:52 永远的不倒翁 阅读(1264) 评论(4) 编辑

2007年3月9日

http://book.csdn.net/bookfiles/13/

posted @ 2007-03-09 12:47 永远的不倒翁 阅读(329) 评论(0) 编辑

2006年11月9日

1.去http://logging.apache.org/,下载log4net

2.建立数据表
    CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)

3.编写配置文件
   在<configuration>元素下添加
   <configSections>
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

 <log4net>

        <root>
            <level value="ALL" />
            <appender-ref ref="ADONetAppender" />
        </root>

            <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
            <bufferSize value="10" />
            <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <connectionString value="server=localhost;database=zero;user id=sa;password=sa" />
            <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
            <parameter>
                <parameterName value="@log_date" />
                <dbType value="DateTime" />
                <layout type="log4net.Layout.RawTimeStampLayout" />
            </parameter>
            <parameter>
                <parameterName value="@thread" />
                <dbType value="String" />
                <size value="255" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%thread" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@log_level" />
                <dbType value="String" />
                <size value="50" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%level" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@logger" />
                <dbType value="String" />
                <size value="255" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%logger" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@message" />
                <dbType value="String" />
                <size value="4000" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%message" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@exception" />
                <dbType value="String" />
                <size value="2000" />
                <layout type="log4net.Layout.ExceptionLayout" />
            </parameter>
        </appender>

    </log4net>

4.在Global.asax.cs中的Application_Start()方法中加上
   log4net.Config.DOMConfigurator.Configure();
(在1.2.10中上面的已过时,推荐使用log4net.Config.XmlConfigurator.Configure();)

5.编写一log类,此处采用Singleton模式(仅供参考)
   如:
      using System;

    namespace Log
    {
        /// <summary>
        /// MyLog 的摘要说明。
        /// </summary>
        public class MyLog
        {
            private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyLog));
            public static void LogInfo()
            {            
                log.Info("log日志");            
            }

            public static void LogError()
            {            
                log.Info("log错误");            
            }
        }
    }

6.在需要记录日志的时候,即可调用MyLog的静态方法.

posted @ 2006-11-09 10:14 永远的不倒翁 阅读(478) 评论(0) 编辑

2006年11月2日

初学,不当之处,请多多指教
1.最后目录结构
   皮肤名称
      --skins
         --皮肤名称.zip(skin.css,xx.ascx或xx.html,xx.jpg)
      --containers
         --皮肤名称.zip (container.css,xxx.ascx或xxx.html,xxx.jpg)    

2. 首先,确定版面布局
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style>
body{background:#555;}
.skinwrapper{border:5px #333 solid;background:#FFF;padding:1px;}
.skinheader{padding:10px;background:#EEE;}
.skinmenu{padding:10px;background:#C00;}
.skinuser{padding:5px;background:#CCC;text-align:right;}
.skincontentstable{width:100%;}
.leftpane{background:#EEE;width:200px;}
.contentpane{background:#FFF;}
.rightpane{background:#EEE;width:200px;}
.skinfooter{padding:5px;background:#CCC;text-align:center;}
</style>
</head>
<body>
<div class="skinwrapper">
            <div class="skinheader">Logo</div>
            <div class="skinmenu">Menu</div>
            <div class="skinuser">Register - Login</div>
            <table border="0" cellpadding="10" cellspacing="0" class="skincontentstable" summary="Design Table">
                        <tr valign="top">
                                    <td class="leftpane">Left Pane</td>
                                    <td class="contentpane">Content Pane</td>
                                    <td class="rightpane">Right Pane</td>
                        </tr>
            </table>
            <div class="skinfooter">Copyright</div>
</div>
</body>
</html>

3.把body标签内的东西做为一独立文件保存(xx.ascx或xx.html)
4.把style标签内的东西做为一独立文件保存(skin.css)
5.在xx.ascx或xx.html插入Skin objects
   ascx里如:<div class="skinfooter"><dnn:COPYRIGHT runat="server" id="dnnCOPYRIGHT" CssClass="skinfooter" /></div>
   html里如::<div class="skinfooter">[COPYRIGHT]</div>
如果使用xx.ascx的话,每个 skin object 都需要registered ,如:<%@ Register TagPrefix="dnn" TagName="COPYRIGHT" Src="~/Admin/Skins/Copyright.ascx" %>
   需要注意的是,定义的pane都不许runat=server
6.补充skin.css的样式

containers的作法与这类似...
最后完成的目录如1所示即可.


     

posted @ 2006-11-02 12:51 永远的不倒翁 阅读(216) 评论(0) 编辑

2006年10月16日


安装出现此错误,是何原因?

posted @ 2006-10-16 17:06 永远的不倒翁 阅读(136) 评论(0) 编辑

2006年10月8日

摘要: 1. 添加对AjaxPro的dll的引用 AjaxPro.dll2. 建立HttpHandler(),让所有对ajax/*.ashx的请求由Ajax.PageHandlerFactory处理<configuration><system.web><httpHandlers><add verb="POST,GET" path="ajaxpro/*.ashx" ...阅读全文

posted @ 2006-10-08 10:32 永远的不倒翁 阅读(447) 评论(1) 编辑

摘要: (^0(\.\d+)?$)|(^[1-9]+\d+(\.\d+)?$)实数^((0\.){1})\d+$ 0.xxx00^([1-9]{1})\d*$ [1-9]XXX^([1-9]+(\.){1})\d*$ [1-9].xxx^((0\.\d+){1})$ 0.xxx^(((0\.\d){1})|0)\d*$ 0与0.xxx^0?|[1-9]+0+(\.?\d+)$^(0|[1-9]\d*)(\...阅读全文

posted @ 2006-10-08 10:03 永远的不倒翁 阅读(143) 评论(0) 编辑

2006年9月27日

摘要: 用JavaScript控制CSS其实很简单,基本上每个DOM对象都有一个style对象,只要把css属性里的"-"去掉,并让随后的字母变为大写就可以作为属性使用了,例如:element.style.backgroundColor="#f00";在css是:选择符 {background-color:#f00}阅读全文

posted @ 2006-09-27 16:33 永远的不倒翁 阅读(2791) 评论(10) 编辑