xiao 的个人资料Swimming Day and Night ~...照片日志列表更多 工具 帮助

日志


11月6日

实现无窗口启动程序(转贴)

有时候我么想实现一种效果,就是程序启动之后,不显示主窗口,只是在系统栏显示一个NotifyIcon,我们可以通过操作这个NotifyIcon来显示主界面。实现这种效果有好多方法,比如我们可以正常启动一个主界面,然后设置其隐藏,等等的,这里推荐一种方法:使用ApplicationContext来实现无窗口启动:

internal class HideOnStartupApplicationContext : ApplicationContext
{
            #region Fields
            private Form mainFormInternal = null;
            #endregion

            #region Constructs
            public HideOnStartupApplicationContext(Form startupForm)
            {
                mainFormInternal = startupForm;
                mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
            }
            #endregion

            #region Events
            void mainFormInternal_Closed(object sender, EventArgs e)
            {
                Application.Exit();
            }
            #endregion
}

然后在入口程序:

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
            HideOnStartupApplicationContext context = new HideOnStartupApplicationContext(new FormStartup());
            Application.Run(context);
}

这样,程序会正常启动,会执行FormStartup的构造函数,但不会显示出来,我们可以把NotifyIcon放在FormStartup窗体上,这样就会在系统栏显示出这个图标,我们的目标达到。

只允许只有一个程序实例运行

我们可以实现这样一个函数:

static bool HasInstance()
{
            Process[] procs = Process.GetProcessesByName(Application.ProductName);
            return (procs.Length > 1);
}

然后在入口程序:

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{

if (!HasInstance())
            {
                HideOnStartupApplicationContext context = new HideOnStartupApplicationContext(new FormStartup());
                Application.Run(context);
            }
            else
            {
                MessageBox.Show("Already running");
            }
}

8月21日

颜色英文代码全集~


颜 色 英 文 代 码 全 集

red
green
blue
magenta
yellow
chocolate
black
aquamarine
lime
fuchsia
brass
azure
brown
bronze
deeppink
aliceblue
gray
copper
coral
feldspar
orange
orchid
pink
plum
quartz
purple
aliceblue
antiquewith
blanchedalmond
blueviolet
beige
burlywood
bisque
cadetblue
pink
saddlebrown
royalblue
rosybrown
purple
orengered
olivedrab
powderblue
peachpuff
papayawhip
paleturquoise
palevioletred
palegreen
navyblue
navajowhite
palegodenrod
violetred
yellowgreen
tomato
turquoise
thistle
springgreen
steelblue
salmon
scarlet
sienna
silver
tan
thistle
turquoise
violet
snow
salmon
scarlet
sienna
silver
tan
thistle
turquoise
violet
chartreuse
firebrick
gold
khaki
mediumslateblue
mediumvioletred
oldlace
maroom
goldenrod
wheat
whitesmoke
orange
moccasin
mistyrose
mintcream
midnightblue
dimgray
darksalmon
slategray
skyblue
sienna
seashell
salmon
seagreen
sandybrown
firebrick
gold
khaki
maroom
goldenrod
wheat
whitesmoke
mediumturquoise
navy
mediumspringgreen
mediumseagreen
mediumpurpul
peru
mediumorchid
mediumblue
mediumaquamarine
maroon
limegreen
lightyellow
lightsteelblue
magenta
lightslateblue
lightslategray
lightskyblue
inen
lightseagreen
lightsalmon
lightpink
plum
lightgray
lightgreen
lightgodenrodyellow
indianred
lavender
lightblue
lavenderblush
lightcoral
lightcyan
lightgodenrod
hotpink
greenyellow
lemonchiffon
lawngreen
khaki
deepskyblue
honeydew
golenrod
forestgreen
gostwhite
greenyellow
gainsboro
firebrick
dodgerblue
darkturquoise
darkslateblue
darkslategray
darkseagreen
darkred
darkorchid
darkorenge
darkslateblue
darkviolet
floralwhite
cyan
bisque darkgray
cornsilk
darkolivegreen
darkgoldenrod
darkblue
darkcyan
darkgreen
darkhaki
ivory
darkmagenta
darkgray
cornfloewrblue
cornfloewrblue
darkviolet
floralwhite
待 补
待 补
darkslategray
darkseagreen
darkred
darkorchid
darkorenge
darkslateblue

     虽然不是专业美工人员,但是设计起界面来也一样不能马虎,哈哈哈哈哈哈哈哈哈哈哈~还有一个什么简表的,居然说文字太多。。。贴不上来。。。

7月17日

所谓的ERP~(转)

    ERP(Enterprise Resource Planning)企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。
    一天中午,丈夫在外给家里打电话:“亲爱的老婆,晚上我想带几个同事回家吃饭可以吗?”(订货意向)
    妻子:“当然可以,来几个人,几点来,想吃什么菜?”
    丈夫:“6个人,我们7点左右回来,准备些酒、烤鸭、番茄炒蛋、凉菜、蛋花汤……。你看可以吗?”(商务沟通)
    妻子:“没问题,我会准备好的。”(订单确认)
    妻子记录下需要做的菜单(MPS计划),具体要准备的东西:鸭、酒、番茄、鸡蛋、调料……(BOM物料清单),发现需要:1只鸭蛋,5瓶酒,4个鸡蛋……(BOM展开),炒蛋需要6个鸡蛋,蛋花汤需要4个鸡蛋(共用物料)。
    打开冰箱一看(库房),只剩下2个鸡蛋(缺料)。
    来到自由市场,妻子:“请问鸡蛋怎么卖?”(采购询价)
    小贩:“1个1元,半打5元,1打9.5元。”
    妻子:“我只需要8个,但这次买1打。”(经济批量采购)
    妻子:“这有一个坏的,换一个。”(验收、退料、换料)
    回到家中,准备洗采、切菜、炒菜……(工艺线路),厨房中有燃气灶、微波炉、电饭煲……(工作中心)。妻子发现拨鸭毛最费时间(瓶颈工序,关键工艺路线),用微波炉自己做烤鸭可能来不及(产能不足),于是阅览室在楼下的餐厅里买现成的(产品委外)。
     下午4点,电话铃又响:“妈妈,晚上几个同学想来家里吃饭,你帮忙准备一下。”(紧急订单)
     “好的,你们想吃什么,爸爸晚上也有客人,你愿意和他们一起吃吗?”
     “菜你看着办吧,但一定要有番茄炒鸡蛋,我们不和大人一起吃,6:30左右回来。”(不能并单处理)
     “好的,肯定让你们满意。”(订单确定)
     鸡蛋又不购了,打电话叫小贬送来。(紧急采购)
     6:30,一切准备就绪,可烤鸭还没送来,急忙打电话询问:“我是李太,怎么订的烤鸭还不送来?”(采购委外单跟催)
     “不好意思,送货的人已经走了,可能是堵车吧,马上就会到的。”
     门铃响了。“李太太,这是您要的烤鸭。请在单上签一个字。”(验收、入库、转应付账款)
     6:45,女儿的电话:“妈妈,我想现在带几个朋友回家吃饭可以吗?”(呵呵,又是紧急订购意向,要求现货)
     “不行呀,女儿,今天妈已经需要准备两桌饭了,时间实在是来不及,真的非常抱歉,下次早点说,一定给你们准备好。”(哈哈,这就是ERP的使用局限,要有稳定的外部环境,要有一个起码的提前期)
     送走了所有客人,疲惫的妻子坐在沙发上对丈夫说:“亲爱的,现在咱们家请客的频率非常高,应该要买些厨房用品了(设备采购),最好能再雇个小保姆(连人力资源系统也有接口了)。
     丈夫:“家里你做主,需要什么你就去办吧。”(通过审核)
     妻子:“还有,最近家里花销太大,用你的私房钱来补贴一下,好吗?”(最后就是应收货款的催要)
     现在还有人不理解ERP吗?记住,每一个合格的家庭都是生产厂长的有力竞争者!
 
     无意发现,拿来和大家分享一下,也许对你我都有启迪……原来一切都源于生活。
7月11日

Substitution

     Substitution 控件,简单通俗的说: 按照自己的意愿指定网页中那些部分可以被缓存,那些不能!
     例如我们要做一个股票适时显示的曲线图,假设我们不会ajax,但又不希望网页上其他东西每次刷新页面都重新到服务器下载,就可以用到这个控件,不过有了ajax过后,我们倒始终觉得这样做不完美,呵呵!
     有一点WEB编程知识的人都应该知道,在默认情况下会缓存该页的全部输出。在第一次打开页面时,该页将运行并缓存其输出。以后在刷新或者在缓存期内重新打开页面,那么将会直接输出缓存中的内容,而不会重新编译!
     可以使用 Substitution 控件将动态内容插入到缓存页中。Substitution 控件不会呈现任何标记。有点象PlaceHolder,他只是占位置,但是不同的是,该控件不能与其他的控件通信,也就是说,您无法检查或更改其他控件的值,但是代码可以使用传递给它的参数来访问当前页上下文。
。您要自行在页上或父用户控件上创建静态方法来返回要插入到页中的信息。这个方法必须符合下面的标准:
1:静态方法。
2,他只接受HttpContext 类型的参数。
3,他返回 String 类型的值。
在页运行时,Substitution 控件会调用该方法,然后用从该方法的返回值替换页上的 Substitution 控件。

Output Cache

所谓output cache,是在执行MSIL之后,先将结果写入output cache,然后再将output cache下传到浏览器,而将来如果浏览同一网页,ASP+会先判断该网页是否有output cache存在,如果有,则直接将output cache下传浏览器,不会经过编译.aspx及执行MSIL的过程,故能提升执行效能。
启动output cache的方法:只要在.ASPX网页的最前面加上以下标记:
<%@output cache duration="秒数"%>
其中durtion表示output cache保留在系统中的秒数,例如:
<%@output cache duration="10"%>
结果网页的output cache将会保留系统中10秒钟,而凡是在这10秒钟内浏览此一网页,ASP+就会直接将output cache下传给浏览器,省略了编译的过程。
1月17日

转载:给妈妈写程序

     昨天中午吃饭的时候,妈妈给我一枝笔,让我将“软盘中的文件弄到机器里边的步骤”,写下来,我受到过无数次类似的折磨,最后我写的东西如下:
     进入Windows->桌面->我的电脑->鼠标左键->点两下->将软盘放入软驱->选中A:->鼠标左键->点两下->找到文件->鼠标右键->选择->"复制"->桌面->鼠标右键->选择-"粘贴"。
     看来,让一个50出头的老太太完成一个看似简单的任务还是十分复杂的,我一直想如果我告诉她Dos中的Copy命令将会怎样,我经常在电话中指导她类似于如何将Excel中单元格内容清除类的操作,而且经常是长途电话(超过8分钟),因为如果我用一点术语,或者部分说法与屏幕不一致,将会将操作带如到无穷无尽的烦恼中。
     今天在和兄弟讨论产品的易用性问题上,就比较头疼,程序员往往忽略了程序的易用性,往往认为功能完成后就万事大吉,而用户使用起来则怨声载道,呵呵,当然也有解决办法,我看过一个很简单的产品,配了一本1000多页的操作指南,我想如果操作一个软件需要看1000页的操作指南,那么这个垃圾真该扔掉了。
     而我们也遇到过滑稽的问题,很多用户对UI上的功能不知道怎么用,往往我们抓个图或者录一段操作视频,问题也就解决了。
     但是问题是为什么我们要设计的那么复杂呢,那个80-20理论我们为什么不重视呢?
     其实程序员都是喜欢将功能一块、一块的来作,然后在UI上堆砌功能就好了,往往在修订的时候,新的功能点可能增加的就欠考虑了,而且系统足够复杂后,UI更加惨不忍睹。
     今天我才开始那么喜欢“向导”,这种简单的方式,将复杂的操作,有序的结合在一起了,其实这才是重点,传统的UI设计只讲功能,往往忽略了次序,而次序往往是更重要的。
     今天开始我才更加喜欢workflow,才明白工作流对一个产品有多么的重要。
     利用工作流的灵活定制,利用向导的简单工作原理,用户的工作才会更加轻松和愉悦。
     我想:在设计的过程中,功能当然更重要,但是如果将功能有机的组合起来,这就要利用向导这种工作方式,而当向导中的流程需要修个的时候,更加灵活的方式是建立在工作流引擎之上,呵呵,还有就是不要提供那么多没用的功能,够用最好,过度灵活反而是件坏事。
     最后我给妈妈的解决办法是,写了一个小程序,单独用来拷贝软盘中的文件的,呵呵,点2下鼠标就好了,她很喜欢。
12月19日

平衡二叉树

平衡二叉树:它的左右子树都是平衡二叉树,且两者深度之差不超过1。
 
PS:突然发现技术文章也是可以用来写blog,blog也是可以用来学习的。
嗯,好好学习,天天向上!~