我想一個整型變量設置爲enum
值的組合工作,enum
是:如何使用整數標誌
public enum WebBrowserDownloadControlFlags : uint
{
DLIMAGES = 0x00000010,
VIDEOS = 0x00000020,
BGSOUNDS = 0x00000040,
NO_SCRIPTS = 0x00000080,
NO_JAVA = 0x00000100,
NO_RUNACTIVEXCTLS = 0x00000200,
NO_DLACTIVEXCTLS = 0x00000400,
DOWNLOADONLY = 0x00000800,
NO_FRAMEDOWNLOAD = 0x00001000,
RESYNCHRONIZE = 0x00002000,
PRAGMA_NO_CACHE = 0x00004000,
NO_BEHAVIORS = 0x00008000,
NO_METACHARSET = 0x00010000,
URL_ENCODING_DISABLE_UTF8 = 0x00020000,
URL_ENCODING_ENABLE_UTF8 = 0x00040000,
NOFRAMES = 0x00080000,
FORCEOFFLINE = 0x10000000,
NO_CLIENTPULL = 0x20000000,
SILENT = 0x40000000,
OFFLINEIFNOTCONNECTED = 0x80000000,
OFFLINE = OFFLINEIFNOTCONNECTED,
}
的DownloadControlFlags
是整型字段:
public int DownloadControlFlags
{
get
{
return _downloadControlFlags;
}
set
{
if (_downloadControlFlags == value)
return;
_downloadControlFlags = value;
IOleControl ctl = (IOleControl)ActiveXInstance;
ctl.OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
}
}
要設置這個變量,我使用總和爲:
webBrowser1.DownloadControlFlags = (int)WebBrowserDownloadControlFlags.DLIMAGES
+ (int)WebBrowserDownloadControlFlags.NOFRAMES
+ (int)WebBrowserDownloadControlFlags.NO_FRAMEDOWNLOAD
+ (int)WebBrowserDownloadControlFlags.NO_JAVA
+ (int)WebBrowserDownloadControlFlags.NO_DLACTIVEXCTLS
+ (int)WebBrowserDownloadControlFlags.NO_BEHAVIORS
+ (int)WebBrowserDownloadControlFlags.NO_RUNACTIVEXCTLS
+ (int)WebBrowserDownloadControlFlags.SILENT;
我不確定它是否是正確的方式,但它似乎起作用。但現在我想檢查變量是否包含特定值。對於正常的enum
解決方案可能是這個問題的答案How to check if any flags of a flag combination are set?,但我不知道我是否可以在我的情況下使用相同的方式。
如何檢查是否設置了特定標誌?例如如果DownloadControlFlags
包含WebBrowserDownloadControlFlags.NO_JAVA
或不包含!
您可以轉換INT到一個枚舉,並檢查它的標誌:'WebBrowserDownloadControlFlags foo =(WebBrowserDownloadControlFlags)yourInt;' –