c#编程技巧.pdf
《c#编程技巧.pdf》由会员分享,可在线阅读,更多相关《c#编程技巧.pdf(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、最小化窗口点 击“X”或“AltF4”时,最小化窗口,如:protected override void WndProc(ref Message m)(const int WM_SYSCOMMAND=0 x0112;const int SC_CLOSE=0 xF060;if(m.Msg=WM_SYSCOMMAND&(int)m.WParam=SC_CLOSE)(/User clicked close buttonthis.WindowState=FormWindowState.Minimized;return;)base.WndProc(ref m);)二、如何让Foreach循环运行的更
2、快foreach是一个对集合中的元素进行简单的枚举及处理的现成语句,用法如下例所示:using System;using System.Collections;namespace LoopTest(class Classi(static void Main(string args)(/create an ArrayList of stringsArrayList array=new ArrayList();array.Add(Marty);array.Add(HBill);array.Add(nGeorge);/print the value of every itemforeach(stri
3、ng item in array)(Console.WriteLine(item);你可以将foreach语句用在每个实现了(enumerable接口的集合里。如果想了解更多foreach 的用法,你可以查看.NET Framework SDK 文档中的 C#Language Specificationo在编译的时候,C#编辑器会对每一个foreach区域进行转换。lEnumerator enumerator=array.GetEnumerator();try(string item;while(enumerator.MoveNextO)(item=(string)enumerator.Cur
4、rent;Console.WriteLine(item);)finally(Disposable d=enumerator as Disposable;if(d!=null)d.Dispose();)这说明在后台,foreach的管理会给你的程序带来一些增加系统开销的额外代码。三、将图片保存到一个XML文件WinForm的资源文件中,将 PictureBox的 Image属性等非文字内容都转变成文本保存,这是通过序列化(Serialization)实现的,例子:using System.Runtime.Serialization.Formatters.Soap;Stream stream=ne
5、wFileStream(HE:lmage.xml/FileMode.Create/FileAccess.Write,FileShare.None);SoapFormatter f=new SoapFormatter();Image img=Image.FromFile(E:lmage.bmp);f.Serialize(stream,img);stream.Close();四、屏蔽CTRL-V在 WinForm中的TextBox控件没有办法屏蔽CTRL-V的剪贴板粘贴动作,如果需要一个输入框,但是不希望用户粘贴剪贴板的内容,可以改用RichTextBox控件,并且在KeyDown中屏蔽掉CTRL
6、-V键,例子:private void richTextBoxl_KeyDown(object sender,System.Windows.Forms.KeyEventArgs e)if(e.Control&e.KeyCode=Keys.V)e.Handled=true;p s:网上摘抄,看了以后感觉不错,以后碰见好的再陆续发布Tags:dotnet技 术,c#开发技术ASP.NET 2.0中使用webpart系列控件Dot-Net技 术|阅读(144)|评论(0)Oct292005 此文来源于互联网,牛 C 网只负责收集整理在现在的网站设计中,更强调的是用户的个性化设置,让用户可以自由的设置
7、符合自己喜好的页面成为网站开发人员的头号难题,不过现在看来这个难题微软帮我们解决了。在 2.0中新增加了一系列webpart控件,可以让用户很方便地对网页的各区域布局进行调整。在 些 w eb应用程序中,如果用户想自定义页面布局,比如一个新闻发布系统,想让左,中,右三栏的位置进行调换的话,就可以使用webpart控件。下面,我们来看下 2.0中 webpart系列控件的一些基本用法。首先,在 2005中的工具箱中,可以找到如下图所示的webpart系列控件,有很多个,限于篇幅,本文介绍其中的些重要的控件:在 webpart系列控件中,其中的webpartmanager控件用于统一管理各webp
8、art控件。而 webpartzone控件,则是提供了各区域划分,在这些区域中,用户可以往里面放置各式各样的控件,而当运行的时候,用户可以移动的就是这些webpartzone控件所在的区域。为增强认识,我们先做个简单的例子。1 首先使用 2005 beta 2(或 者 RC1)新建一个web站点,2、往窗体中拖拉一个webpartmanager控件,再建一个3 列 1 行的表格,分别往每个单元格里拖拉一个webpartzone控件,如下图:3、往 webpartzonel中拖拉放一个日历控件,并为这个日历控件选择一个合适的样式4、切换到代码视图状态,将日历控件的title属性改为:today
9、s date。注意的是,日历控件本身没有title属性,但当一个控件加入到webpartzone区域中去后,则该控件被自动包装为GenericWebPart类型控件,这些类型的控件有title属性。5、这时,我们可以按F5来运行该程序,运行如下图所示,可以看到,区域的右上角有最小化和关闭,恢复的按钮。接下来,我们介绍如何在webpart系列控件中,使用用户自定义的控件。1、首先,我们为工程项目增加-个google.ascx的控件,并且在images目录下,添加google那张著名的logo图片。接着,往窗体中添加一个2*2行的表格,再往其中的一个单元格添加一个image图象控件,指定其图象为g
10、oogle.gif,再添加一个文本框,一个按钮,如下图所示,其中,括号内的是该控件的名称:3、在 btnsearch按钮的click事件中写入如下代码:Response.Write(Page.lsValid)Dim queryStr As String=HttpUtility.UrlEncode(txtSearch.Text)Response.Redirect(http:/ Sub4、这时,将写好的google.ascx控件,整个拖拉到我们刚才建立好的表格中的中间那个单元格,如下图所示:我们并且修改代码如下,修改其名称为google serach:接下来,F5运行,可以看到,可以在google
11、search所在的webpart里进行google搜索了。同时,如果觉得webpart的那些关闭,恢复,最小化的按钮不大好看,还可以自定义按钮,比如在images目录下,添加下面的图片:然后,在 webpartzonel的属性中,指定如下的属性就可以了。CloseVerb.lmageUrl=lmages/Close Verb.gifEditVerb.lmageUrl=lmages/EditVerb.gifMinimizeVerb.lmageUrl=,lmages/MinimizeVerb.gifRestoreVerb.lmageUrl=ulmages/RestoreVerb.gif使 webp
12、art动起来上面设计的webpart还没能动起来,要让we bpart动起来的话,必须要将webpar设置为 design display模式。先为webpart添加卜面的radiobutton选择框Browse Display ModeDesign Display Mode并且在code-behind的代码中,写入如下代码:Protected Sub RadioButtonListl_SelectedlndexChanged(ByVal sender As Object,_ By Vai e AsSystem.Eve nt Args)_ Handles rblMode.Selectedlnd
13、exChangedSelect Case rblMode.SelectedlndexCase 0:WebPartManagerl.DisplayMode=WebPartManager.BrowseDisplayModeCase 1:WebPartManagerl.DisplayMode=WebPartManager.DesignDisplayModeEnd SelectEnd Sub运行上面代码,选择design display m ode,则可以象下图那样,自山拖动webpart,要注意的是,当移动各webpart的位置后,即使关掉浏览器,卜次重新打开时,依然可以看到各个控件保持原来的位置。
14、其实, 2.0 是 使 用 在 aspnetdb.mdf中的一个叫aspnet_PersonalizationPerUser的表来保存数据的,表的结构如卜所示:Field ValueId 928el21a-4042-4fb4-9520-21210b9b37clPathld 7c3b5dc0-04d0-48a2-bbb2-2b70286f22feUserid 9bffl4df-024f-4bda-9a0a-b4al9ab9e387PageSettings LastUpdatedDate 10/02005 4:44:05 AM如果想恢复各控件的原来位置,只需要将该数据表中相应的行删除掉就可以了。但
15、有个问题是,如果使用每一个webpart的关闭按钮,则很难再将其恢复(当然删除数据表中的行,但十分麻烦)。在 2.0中,提供了另一种webpart,叫做catlogzone控件,下面介绍其用法:1、往窗体中拖拉一个catlogzone控件,如下图所视。2、往 该 catlogzone控 件 区 域 中,再 拖 放 三 个 we bpart系 列 的 控 件,分别是DeclarativeCatalogPart,PageCatalogPart,and ImportCatalogPart,如 下 图 所 示。其中,DeclarativeCatalogPart控件的作用是,显示目前页面上有哪些可以用的
16、webpart控件;PageCatalogPart的作用是,可以让用户通过勾选的方式,选定将哪些控件添加转移到其他webpart区域中去。ImportCatalogPart则可以通过外部磁盘文件的方式,加载其他做好了的we bpart 部件。3、在 radiobutton区域中,修改以下代码,增 添 个 catalog display的显示模式:Browse Display Mode Design Display ModeCatalog Display Mode然后,在 code-behind的代码中,将代码修改为如下:Protected Sub rblMode_SelectedlndexCh
17、anged(_By Vai sender As Object,_By Vai e As System.EventArgs)_ _Handles rblMode.SelectedlndexChangedSelect Case rblMode.SelectedlndexCase 0:WebPartManagerl.DisplayMode=WebPartManager.BrowseDisplayModeCase 1:WebPartManagerl.DisplayMode=WebPartManager.DesignDisplayModeCase 2:WebPartManagerl.DisplayMod
18、e=WebPartManager.CatalogDisplayModeEnd SelectEnd Sub4、在 DeclarativeCatalogPart任务菜单上,点击右上角的智能感知按钮,然后选edittemplates”的链接,进入模版编辑状态,如下图:再往其中的webpartstemplate区域中拖拉一个google.ascx控件,如下图,这将允许用户在运行时,可以自由地往页面增加这样的google搜索控件。5、然后修改代码如下:6、运行程序,可以看到,当选择catalog display mode时,会显示如下图所示的catalogzone,其中列出了当前可用的有哪些webpar
19、t控件,我们可以把这个google的控件加到其他的 webpart区域,也可以尝试将已经存在的webpart控件关闭,然后在catalog zone区域中的控件列表中,把它们再加回到页面中去。此外,在运行期间,还可以动态地修改webpart控件的外观等属性,如卜.:1)往窗体中添加一个editor zone的区域控件,往其中再拖放一个appearanceEdiotrPart控件,该控件可以在运行时,让用户动态改变各webpart控件的属性。2)我们再修改radiobutton选择框的代码如卜,则加一个编辑模式:Browse Display ModeDesign Display Mode Cat
20、alog Display ModeEdit Display Mode3)修改code-behind代 码 如 卜.:Protected Sub rblMode_SelectedlndexChanged(ByVal sender As Object,By Vai e AsSystem.Eve nt Args)_Handles rblMode.SelectedlndexChangedSelect Case rblMode.SelectedlndexCase 0:WebPartManagerl.DisplayMode=WebPartManager.BrowseDisplayModeCase 1:We
21、bPartManagerl.DisplayMode=WebPartManager.DesignDisplayModeCase 2:WebPartManagerl.DisplayMode=WebPartManager.CatalogDisplayModeCase 3:WebPartManagerl.DisplayMode=WebPartManager.EditDisplayModeEnd SelectEnd Sub4)运行程序,选择edit display mode模式,这时,会发现每个控件的右.上角,会多了一个“edit”的按钮,点该按钮,弹出如下图的窗体,用户可以修改每个控件的外观等属性。最
22、后,我们看下,webpart控件之间还可以进行相互之间的通信,下面的例子中,要实现的是,在一个I I历控件中点选某一个I 1期,会在已经做好的googlesearch的 webpart控件的文本框中显示其日期,达到通信的目的,下面介绍其实现步骤:工、为了使两个webpart控件之间进行通信,必须先声明一个公共的接口。往工程项目里增加一个叫ISelectedDate.vb的类文件,放 在 app_code目录下,写入如下代码:Imports Microsoft.VisualBasicPublic Interface ISelectedDateReadonly Property SelectedD
23、ate()As DateEnd Interface这里,我们返回一个只读的I I期属性selectedDate.2、再创建一个 日历控件CalendarUCascx,其中拖拉一个普通的日历控件即可。然后写入如下代码:Partial Class CalendarUC_ascxInherits System.Web.Ul.UserControlImplements ISelectedDatePublic Readonly Property SelectedDate()As Date Implements ISelectedDate.SelectedDateGetReturn Calendarl.S
24、electedDate.DateEnd GetEnd Property _Public Function GetSelectedDate()As ISelectedDateReturn MeEnd FunctionEnd Class上 面 的 代 码,首 先 实 现 了 已 经 声 明 了 的 ISelectedDate接 口,要 留 意 的 是 VConnectionProviderCSelectedDate,“SelectedDate)中的写法。由于在这个例子中,日历控件要为其他的控件提供信息,因此,该II历控件是一个provider(提供者),而另外的接收信息的控件,是 consumer
25、(消费者)。而两者为了要通信,必须要提供一个通信接入点,就象一个 电 插 头,要 找 到 合 适 的 电 插 板 一 样。因 此,V ConnectionProvider(SelectedDate,“SelectedDate”)中的第一个参数,定义了两者的接口点,第二个参数,则是要传递给consumer 的参数,本例是 selected Date o3、接下来,我们在已经做好的google.ascx控件的代码中,编写如下代码:Private _selectedDate As ISelectedDate _Sub setSearchText(ByVaI SearchText As ISelect
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 编程 技巧
限制150内