微软.net精简框架常见问题及回答(中文版)(67)

王朝c#·作者佚名  2006-01-09
宽屏版  字体: |||超大  

7.21. 不使用Control.Name,可以判断事件的发送者吗?

这篇文章讨论了在.net精简框架下如何判断事件的发送者,.net精简框架中的控件不支持name属性:

http://msdn.microsoft.com/library/en-us/dncfhowto/html/HOWTOsenderevent.asp

7.22. 如何在线程中调用方法的参数?

在应用程序中使用多线程,可以提高用户界面的性能。基类Control提供Invoke、BeginInvoke和EndInvoke方法在控件中来建立线程。.net精简框架不支持异步的BeginInvoke和EndInvoke调用。到现在,也还不支持向同步Invoke调用传递参数。这篇快速入门教程提供一个自定义类ControlInvoker,可以实现向Invoke方法中传递参数:

http://samples.gotdotnet.com/quickstart/CompactFramework/doc/controlinvoker.aspx

7.23. 如何建立提醒程序和定时程序?

这篇快速入门文章描述了使用P/Invoke定义一个用户提醒和订时的应用。您可以计划提醒窗口弹出的时间。您也可以设置一个应用程序在特定的时间运行或响应某个事件。

http://samples.gotdotnet.com/quickstart/CompactFramework/doc/notifications.aspx

7.24. 如何播放声音?

这篇快速入门教程演示了使用P/Invoke播放个短WAV文件,一个是作为嵌入式资源,另一个作为一个内容。这个窗体包含了两个按钮,一个播放嵌入资源的Chimes.wav,另一个按单独的文件播放Chord.wav。

http://samples.gotdotnet.com/quickstart/CompactFramework/doc/playsounds.aspx

7.25. 如何使用命令行参数?

在代码中使用命令行参数,只须简单的定义main方法接受参数并正确处理。以下代码演示了这个方法:

//C#

static void Main(string[] args)

{

// Do your thing here

}

'VB

Shared Sub Main(ByVal args() As String)

'Do your thing here

End Sub

在Visual Studio 2003中测试的时候,可以通过继承开发环境设置命令行的参数。主菜单,选择 Project->Project Name Properties. 在Property Pages对话框中,选择 Configuration Properties->Debugging。在 Command Line Arguments 中输入字符串:text box.

7.26. 当使用已经释放的对象的方法或属性的时候,为什么得到一个异常?

完整的.net框架不保证,在访问一个已经释放的对象的属性或方法时能成功。在完整的.net框架下,虽然访问某些属性(像Text),经常能成功。根据.net框架和.net精简框架执行上的区别,在.net精简框架上访问已经释放了的对象的方法或属性会经常失败。

7.27. 如何获得"Enter", "TAB", 和 "Arrow"按键的事件?

使用KeyDown和KeyUp事件,可以获得无字符的键(像tab)。

现在,只有一些特定的控件支持key的事件(如,form, panel, textbox 和自定义控件)。在.net精简框架SP2版本中,所有控件都将支持key事件。

已经知道的问题,在使用模拟器时,从键盘按下tab键将不被支持,但从软键盘(SIP)上按下tab时,会有效果。

这是VS带的模拟器的原因造成,而不是.net精简框架的问题。.net精简框架触发Key事件当它收到系统传来的WM_KEY*消息。当您在模拟器中运行本地代码程序时,从键盘按下tab键并不会让系统触发WM_KEYDOWN事件。若是通过模拟器的软键盘(SIP),或真正的设备,则不会有这个问题。

7.28. 如何删除一个只读文件?

使用System.IO.FileInfo类访问文件的属性。 //C#

System.IO.FileInfo fi = new System.IO.FileInfo("filename");

// remove readonly attribute

fi.Attributes -= System.IO.FileAttributes.ReadOnly;

System.IO.File.Delete("filename");

'VB

Dim fi As New System.IO.FileInfo("filename")

'remove readonly attribute

fi.Attributes -= IO.FileAttributes.ReadOnly

System.IO.File.Delete("filename")

7.29. How do I determine if a member exists at runtime?

The existence of a member can be determined at runtime using Reflection. The code below demonstrates how to use Reflection to access the "Width" property and the "GetPixel" method of a Bitmap object. In the case of the "Width" property, the code enumerates all "public" properties with a "get" component and then searches for one named "Width". The "GetPixel" sample demonstrates how one might use Reflection to call a known function where the parameter order is unknown. This sample is set up as if the author knows there is a method named "GetPixel" which takes a pixel location of x,y but does not know the order in which they appear in the parameter list. The sample enumerates the methods and searches for one named "GetPixel" and then enumerates the parameter list to determine whether the first or second parameter is named "X". Keep in mind that, due to the differences in hardware pixel formats, the value returned by GetPixel may be different from that set by SetPixel in this sample.

Reflection provides many powerful tools for determing functionality at runtime so for information, refer to the documentation regarding System.Type and the namespace System.Reflection.

//C#

using System.Reflection;

using System.Drawing;

Bitmap bm = new Bitmap(200, 100);

int width = 0;

// Explicitly set one pixel for testing

int x = 199;

int y = 20;

Color pixColor = Color.Black;

bm.SetPixel(x,y,Color.Magenta);

// Get the "Width" property

PropertyInfo[] propInfo =

bm.GetType().GetProperties(BindingFlags.GetProperty |

BindingFlags.Public | BindingFlags.Instance);

第一页    上一页    第67页/共78页    下一页    最后页
第01页 第02页 第03页 第04页 第05页 第06页 第07页 第08页 第09页 第10页 
第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 
第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 
第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 
第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 
第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 
第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 
第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有