昨天去百度了一下如何做wizard,有人说用一个一个的Form,有人说用tabcontrol。我觉得用tabcontrol比较好,页面容易管理。于是继续百度tabcontrol,发现有很多人纠结如何把上面的标签栏去掉。方法五花八门,主要是在tabcontrol上做文章,什么item的size设置小一点,自己绘制,等等。但是有个人的一句话说的很简单,直接用一个panel把它上面的标签栏遮住不就行了。我就用的这个方法,很实用。这
就说明,有很多时候想问题要会变换思路,跳出tabcontrol本身去解决tabcontrol的问题,思维很值得借鉴。
另外,就是设置next,previous按钮的问题,还有tabcontrol切换时的问题,这个时候就需要我前面说的分析问题。我的思路是这样,当点击next按钮的时候,首先完成当前页面控件内的一些工作,比如保存数据等等,然后设置按钮(比如最后一步next要变成finish),而后切换tabcontrol。当点击previous按钮的时候,首先设置按钮(比如第一个页面没有previous按钮),而后切换tabcontrol。
在tabcontraol的selectedindexchanged事件里面处理初始化的工作,相当于一个Form的Load。当然,为了保证页面能够正常显示,在进行耗费时间的Load工作之前,可以用Application.DoEvents()把程序交给操作系统。。
------------
在Codeproject上找了一下textBox用灰色文字提示的做法。主要是在OnLeave和OnEnter中,并且设置一个InnerText(string)来表示实际的数据字符串,HintText(string)来表示提示字符串。
OnEnter:
1 设置Forcolor为正常的显示颜色;
2 if string.IsNullOrEmpty(InnerText) Text="" else Text=InnerText;
OnLeave:
if string.IsNullOrEmpty(Text) {Text=HintText;ForeColor=灰色;InnerText="";} //如果没有输入,就还原为提示状态
else {ForeColor=正常颜色;InnerText=Text;}
初始化:
Text=Hinttext;ForeColor=灰色。