GVKun编程网logo

为什么System.Windows.MessageBoxImage具有相同值的枚举子项?

18

本篇文章给大家谈谈为什么System.Windows.MessageBoxImage具有相同值的枚举子项?,同时本文还将给你拓展.net–为什么System.Windows.MessageBoxIma

本篇文章给大家谈谈为什么System.Windows.MessageBoxImage具有相同值的枚举子项?,同时本文还将给你拓展.net – 为什么System.Windows.MessageBoxImage具有相同值的枚举子项?、.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作、AfxMessageBox () 和 MessageBox () 的区别 & PCH 预编译头文件(201...、AfxMessageBox()和MessageBox()的区别 & PCH预编译头文件(201...等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

为什么System.Windows.MessageBoxImage具有相同值的枚举子项?

为什么System.Windows.MessageBoxImage具有相同值的枚举子项?

我试图通过MessageBoxImage枚举编写我自己的抽象,并看到MessageBoxImage被定义为:

namespace System.Windows { public enum MessageBoxImage { None = 0,Error = 16,Hand = 16,Stop = 16,Question = 32,Exclamation = 48,Warning = 48,Asterisk = 64,information = 64,} }

Show方法如何确定是显示错误图像还是手形图像? 我如何编写一个需要MessageBoxImagetypes的方法,并返回一个映射到MessageBoxImagetypes的CustomMessageBoxImagetypes,因为我不能在同一个switch语句中同时包含MessageBoxImage.Error和MessageBoxImage.Hand?

如何在.NET中侦听Windows广播消息?

使用ScheduledTasks类删除预定作业

是否有可能确定哪个进程启动我的.Net应用程序?

如何检查一条path是否是另一条path的孩子?

为什么在Vista / 7中,RequestAdditionalTime()方法不能重新启动?

历史上有不同的图标,最终被合并成一个实际的图标图像。 所以有几个枚举类型的值(例如Hand和Stop),它们在现代Windows操作系统中意味着同样的东西。 他们之间没有任何区别,他们只是别名。

如果你想有新的值来表示差异,那么你可以使用一个二级变量(例如“isError)来传达你想要在Stop和Hand之间应用的差异,或者你可以将Icon的值复制到一个int,并设置一个高位表示这个额外的信息,所以它可以在一个变量中“携带”,或者你可以使用自己的与MessageBoxIcon“无关”的枚举,并且有从你的值转换到MessageBoxIcon值的方法。

我建议拥有自己的“状态”值,然后根据需要将其转换为图标值 – 两者传达的信息十分不同,所以试图超载(损坏)MessageBox值来传递额外的信息不会是一个非常好的方法。

并非所有的枚举(错误,信息,停止和警告)在精简版框架中都可用。

如果您在完整的Windows客户端和Compact Framework客户端之间共享代码文件,则需要使用Asterisk,Exclamation,Hand,None或Question枚举。

https://msdn.microsoft.com/en-us/library/system.windows.forms.messageBoxicon(v=vs.80).aspx

.net – 为什么System.Windows.MessageBoxImage具有相同值的枚举子项?

.net – 为什么System.Windows.MessageBoxImage具有相同值的枚举子项?

我正在尝试在MessageBox Image枚举上编写自己的抽象,并看到MessageBoxImage定义为:

namespace System.Windows
  {
      public enum MessageBoxImage
      {
          None = 0,Error = 16,Hand = 16,Stop = 16,Question = 32,Exclamation = 48,Warning = 48,Asterisk = 64,information = 64,}
  }

Show方法如何确定是显示错误图像还是手形图像?
我如何编写一个采用MessageBoxImage类型的方法,并返回一个映射到MessageBoxImage类型的CustomMessageBoxImage类型,因为我不能在同一个switch语句中同时包含MessageBoxImage.Error和MessageBoxImage.Hand?

解决方法

历史上,有不同的图标最终被合并为单个实际图标图像.因此,有几个枚举类型值(例如Hand和Stop)在现代Windows操作系统中只是意味着相同的东西.它们之间没有区别,它们只是别名.

如果你想有新的值来表示差异,那么你可以使用一个辅助变量(例如“isError”)来传达你想要在Stop和Hand之间应用的差异.或者你可以将Icon值复制到一个int并设置一个高在值中指示此额外信息,以便它可以在单个变量中“携带”.或者您可以使用与MessageBoxIcon“无关”的自己的枚举,并具有从您的值转换为MessageBoxIcon值的方法.

我建议拥有自己的“状态”值,然后根据需要将其转换为Icon值 – 两者传达的信息完全不同,因此尝试重载(损坏)MessageBox值以传达额外信息将不会很好方法.

.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作

.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作

我最近遇到了编写Windows服务的挑战.我需要定期请求URL并检查其可用性.为此,我决定在服务的OnStart方法中初始化一个计时器,并在timer_Tick事件中完成所有工作.

我的第一种方法是使用System.Windows.Forms.Timer及其Tick事件.我选择了它,因为我正在阅读的教程.不知怎的,我无法使服务工作.它安装并启动没有问题,但它不会触发事件(我将调试器附加到进程并看到它没有被触发).我认为在Windows服务中使用Forms计时器可能不是一个好主意,因此我决定切换到System.Timers.Timer并利用其Elapsed事件.这也不起作用.我在Windows窗体应用程序中尝试了两种提到的方法,但它们都有效.

经过一番挖掘后,我发现这个网站:http://weblogs.asp.net/sibrahim/archive/2004/01/13/58429.aspx,博主建议使用另一个计时器:System.Threading.Timer.我第三次改变了这种方法,BOOM开始像魅力一样工作.

我的问题是:为什么我不能在Windows服务中使用其他计时器,为什么找到有关它的信息这么困难?

System.Windows.Forms.Timer计时器使用UI的消息泵来编组tick事件,默认情况下服务不运行消息泵,因此没有一点额外的工作,System.Windows.Forms.Timer计时器将不会工作.

System.Timers.Timer是一个基于服务器的计时器,并在您创建它的线程上引发一个事件(我认为).如果这不起作用,也许你没有启动计时器或计时器在一个立即结束的线程上运行(因为,没有任何东西保持线程活着,所以它完成).

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

System.Threading.Timer计时器使用在ThreadPool线程上运行的回调,并且根本不依赖于消息泵,因此这有效.

当您在WinForms项目中运行Application.Run(myForm)时,该调用也会运行消息泵,这将管理UI消息.您提到的Windows计时器是一个UI组件,并期望消息泵运行,以便在UI线程上发生tick事件.

看看这里在Windows服务中运行消息泵:

Message pump in .NET Windows service

进一步阅读:

http://support.microsoft.com/kb/842793

总之,我只是使用System.Threading.Timer类.

AfxMessageBox () 和 MessageBox () 的区别 & PCH 预编译头文件(201...

AfxMessageBox () 和 MessageBox () 的区别 & PCH 预编译头文件(201...

----------------------------------------------------------------------------------------------  
    问:AfxMessageBox () 和 MessageBox () 的区别?
    答:带 Afx 的是全局函数,可以在程序任何地方使用,不带的是 CWnd 的子函数,只能在 CWnd 窗口类对象里面使用

    附: int AfxMessageBox (LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0);
---------------------------------------------------------------------------------------------- 
    因为看到 *.pch 文件很大,于是便把它给删了,编译的时候出现这样的问题 Cannot open precompiled header file: ''Debug/6_6 消息对话框.pch'': No such file
    网上找了一下解决办法,其实很简单,只需要让编译器生成一个 pch 文件就可以了。也就是说把 Stdafx.cpp(即指定 / Yc 的那个 cpp 文件)重新编译一遍,当然你可以傻傻的 Rebuild All
----------------------------------------------------------------------------------------------

AfxMessageBox()和MessageBox()的区别 & PCH预编译头文件(201...

AfxMessageBox()和MessageBox()的区别 & PCH预编译头文件(201...

----------------------------------------------------------------------------------------------  
    问:AfxMessageBox()和MessageBox()的区别?
    答:带Afx的是全局函数,可以在程序任何地方使用,不带的是CWnd的子函数,只能在CWnd窗口类对象里面使用

    附: int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
---------------------------------------------------------------------------------------------- 
    因为看到*.pch文件很大,于是便把它给删了,编译的时候出现这样的问题 Cannot open precompiled header file: ''Debug/6_6消息对话框.pch'': No such file
    网上找了一下解决办法,其实很简单,只需要让编译器生成一个pch文件就可以了。也就是说把 Stdafx.cpp(即指定/Yc的那个cpp文件)重新编译一遍,当然你可以傻傻的 Rebuild All
----------------------------------------------------------------------------------------------

今天关于为什么System.Windows.MessageBoxImage具有相同值的枚举子项?的分享就到这里,希望大家有所收获,若想了解更多关于.net – 为什么System.Windows.MessageBoxImage具有相同值的枚举子项?、.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作、AfxMessageBox () 和 MessageBox () 的区别 & PCH 预编译头文件(201...、AfxMessageBox()和MessageBox()的区别 & PCH预编译头文件(201...等相关知识,可以在本站进行查询。

本文标签: