Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / WinForms / Managed / System / WinForms / FolderBrowserDialog.cs / 1 / FolderBrowserDialog.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms
{
using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Diagnostics.CodeAnalysis;
///
///
///
/// Represents a common dialog box that allows the user to specify options for
/// selecting a folder. This class cannot be inherited.
///
///
[
DefaultEvent("HelpRequest"),
DefaultProperty("SelectedPath"),
Designer("System.Windows.Forms.Design.FolderBrowserDialogDesigner, " + AssemblyRef.SystemDesign),
SRDescription(SR.DescriptionFolderBrowserDialog)
]
public sealed class FolderBrowserDialog : CommonDialog
{
// Root node of the tree view.
private Environment.SpecialFolder rootFolder;
// Description text to show.
private string descriptionText;
// Folder picked by the user.
private string selectedPath;
// Show the 'New Folder' button?
private bool showNewFolderButton;
// set to True when selectedPath is set after the dialog box returns
// set to False when selectedPath is set via the SelectedPath property.
// Warning! Be careful about race conditions when touching this variable.
// This variable is determining if the PathDiscovery security check should
// be bypassed or not.
private bool selectedPathNeedsCheck;
// Callback function for the folder browser dialog (see VSWhidbey 551866)
private UnsafeNativeMethods.BrowseCallbackProc callback;
///
///
///
/// Initializes a new instance of the class.
///
///
public FolderBrowserDialog()
{
Reset();
}
///
///
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new event EventHandler HelpRequest
{
add
{
base.HelpRequest += value;
}
remove
{
base.HelpRequest -= value;
}
}
///
///
/// Determines if the 'New Folder' button should be exposed.
///
[
Browsable(true),
DefaultValue(true),
Localizable(false),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogShowNewFolderButton)
]
public bool ShowNewFolderButton
{
get
{
return showNewFolderButton;
}
set
{
showNewFolderButton = value;
}
}
///
///
/// Gets the directory path of the folder the user picked.
/// Sets the directory path of the initial folder shown in the dialog box.
///
[
Browsable(true),
DefaultValue(""),
Editor("System.Windows.Forms.Design.SelectedPathEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
Localizable(true),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogSelectedPath)
]
/// SECREVIEW: ReviewImperativeSecurity
/// vulnerability to watch out for: A method uses imperative security and might be constructing the permission using state information or return values that can change while the demand is active.
/// reason for exclude: we want to protect when the dialog has been set by the user - this is directly set when in RunDialog
[SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity")]
public string SelectedPath
{
get
{
if (selectedPath == null || selectedPath.Length == 0)
{
return selectedPath;
}
if (selectedPathNeedsCheck)
{
Debug.WriteLineIf(IntSecurity.SecurityDemand.TraceVerbose, "FileIO(" + selectedPath + ") Demanded");
new FileIOPermission(FileIOPermissionAccess.PathDiscovery, selectedPath).Demand();
}
return selectedPath;
}
set
{
selectedPath = (value == null) ? String.Empty : value;
selectedPathNeedsCheck = false;
}
}
///
///
/// Gets/sets the root node of the directory tree.
///
[
Browsable(true),
DefaultValue(System.Environment.SpecialFolder.Desktop),
Localizable(false),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogRootFolder),
TypeConverter(typeof(SpecialFolderEnumConverter))
]
public System.Environment.SpecialFolder RootFolder
{
get
{
return rootFolder;
}
[SuppressMessage("Microsoft.Performance", "CA1803:AvoidCostlyCallsWherePossible")]
set
{
// FXCop:
// leaving in Enum.IsDefined because this Enum is likely to grow and we dont own it.
if (!Enum.IsDefined(typeof(System.Environment.SpecialFolder), value))
{
throw new InvalidEnumArgumentException("value", (int)value, typeof(System.Environment.SpecialFolder));
}
rootFolder = value;
}
}
///
///
///
/// Gets or sets a description to show above the folders. Here you can provide instructions for
/// selecting a folder.
///
///
[
Browsable(true),
DefaultValue(""),
Localizable(true),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogDescription)
]
public string Description
{
get
{
return descriptionText;
}
set
{
descriptionText = (value == null) ? String.Empty : value;
}
}
///
/// Helper function that returns the IMalloc interface used by the shell.
///
private static UnsafeNativeMethods.IMalloc GetSHMalloc()
{
UnsafeNativeMethods.IMalloc[] malloc = new UnsafeNativeMethods.IMalloc[1];
UnsafeNativeMethods.Shell32.SHGetMalloc(malloc);
return malloc[0];
}
///
///
///
/// Resets all properties to their default values.
///
///
public override void Reset()
{
rootFolder = System.Environment.SpecialFolder.Desktop;
descriptionText = String.Empty;
selectedPath = String.Empty;
selectedPathNeedsCheck = false;
showNewFolderButton = true;
}
///
///
/// Implements running of a folder browser dialog.
///
protected override bool RunDialog(IntPtr hWndOwner)
{
IntPtr pidlRoot = IntPtr.Zero;
bool returnValue = false;
UnsafeNativeMethods.Shell32.SHGetSpecialFolderLocation(hWndOwner, (int) rootFolder, ref pidlRoot);
if (pidlRoot == IntPtr.Zero)
{
UnsafeNativeMethods.Shell32.SHGetSpecialFolderLocation(hWndOwner, NativeMethods.CSIDL_DESKTOP, ref pidlRoot);
if (pidlRoot == IntPtr.Zero)
{
throw new InvalidOperationException(SR.GetString(SR.FolderBrowserDialogNoRootFolder));
}
}
int mergedOptions = (int) UnsafeNativeMethods.BrowseInfos.NewDialogStyle;
if (!showNewFolderButton)
{
mergedOptions += (int) UnsafeNativeMethods.BrowseInfos.HideNewFolderButton;
}
// The SHBrowserForFolder dialog is OLE/COM based, and documented as only being safe to use under the STA
// threading model if the BIF_NEWDIALOGSTYLE flag has been requested (which we always do in mergedOptions
// above). So make sure OLE is initialized, and throw an exception if caller attempts to invoke dialog
// under the MTA threading model (...dialog does appear under MTA, but is totally non-functional).
if (Control.CheckForIllegalCrossThreadCalls && Application.OleRequired() != System.Threading.ApartmentState.STA)
{
throw new System.Threading.ThreadStateException(SR.GetString(SR.DebuggingExceptionOnly, SR.GetString(SR.ThreadMustBeSTA)));
}
IntPtr pidlRet = IntPtr.Zero;
IntPtr pszDisplayName = IntPtr.Zero;
IntPtr pszSelectedPath = IntPtr.Zero;
try
{
// Construct a BROWSEINFO
UnsafeNativeMethods.BROWSEINFO bi = new UnsafeNativeMethods.BROWSEINFO();
pszDisplayName = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
pszSelectedPath = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
this.callback = new UnsafeNativeMethods.BrowseCallbackProc(this.FolderBrowserDialog_BrowseCallbackProc);
bi.pidlRoot = pidlRoot;
bi.hwndOwner = hWndOwner;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = descriptionText;
bi.ulFlags = mergedOptions;
bi.lpfn = callback;
bi.lParam = IntPtr.Zero;
bi.iImage = 0;
// And show the dialog
pidlRet = UnsafeNativeMethods.Shell32.SHBrowseForFolder(bi);
if (pidlRet != IntPtr.Zero)
{
// Then retrieve the path from the IDList
UnsafeNativeMethods.Shell32.SHGetPathFromIDList(pidlRet, pszSelectedPath);
// set the flag to True before selectedPath is set to
// assure security check and avoid bogus race condition
selectedPathNeedsCheck = true;
// Convert to a string
selectedPath = Marshal.PtrToStringAuto(pszSelectedPath);
returnValue = true;
}
}
finally
{
UnsafeNativeMethods.IMalloc malloc = GetSHMalloc();
malloc.Free(pidlRoot);
if (pidlRet != IntPtr.Zero)
{
malloc.Free(pidlRet);
}
// Then free all the stuff we've allocated or the SH API gave us
if (pszSelectedPath != IntPtr.Zero)
{
Marshal.FreeHGlobal(pszSelectedPath);
}
if (pszDisplayName != IntPtr.Zero)
{
Marshal.FreeHGlobal(pszDisplayName);
}
this.callback = null;
}
return returnValue;
}
///
/// Callback function used to enable/disable the OK button,
/// and select the initial folder.
///
private int FolderBrowserDialog_BrowseCallbackProc(IntPtr hwnd,
int msg,
IntPtr lParam,
IntPtr lpData)
{
switch (msg)
{
case NativeMethods.BFFM_INITIALIZED:
// Indicates the browse dialog box has finished initializing. The lpData value is zero.
if (selectedPath.Length != 0)
{
// Try to select the folder specified by selectedPath
UnsafeNativeMethods.SendMessage(new HandleRef(null, hwnd), (int) NativeMethods.BFFM_SETSELECTION, 1, selectedPath);
}
break;
case NativeMethods.BFFM_SELCHANGED:
// Indicates the selection has changed. The lpData parameter points to the item identifier list for the newly selected item.
IntPtr selectedPidl = lParam;
if (selectedPidl != IntPtr.Zero)
{
IntPtr pszSelectedPath = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
// Try to retrieve the path from the IDList
bool isFileSystemFolder = UnsafeNativeMethods.Shell32.SHGetPathFromIDList(selectedPidl, pszSelectedPath);
Marshal.FreeHGlobal(pszSelectedPath);
UnsafeNativeMethods.SendMessage(new HandleRef(null, hwnd), (int) NativeMethods.BFFM_ENABLEOK, 0, isFileSystemFolder ? 1 : 0);
}
break;
}
return 0;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms
{
using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Diagnostics.CodeAnalysis;
///
///
///
/// Represents a common dialog box that allows the user to specify options for
/// selecting a folder. This class cannot be inherited.
///
///
[
DefaultEvent("HelpRequest"),
DefaultProperty("SelectedPath"),
Designer("System.Windows.Forms.Design.FolderBrowserDialogDesigner, " + AssemblyRef.SystemDesign),
SRDescription(SR.DescriptionFolderBrowserDialog)
]
public sealed class FolderBrowserDialog : CommonDialog
{
// Root node of the tree view.
private Environment.SpecialFolder rootFolder;
// Description text to show.
private string descriptionText;
// Folder picked by the user.
private string selectedPath;
// Show the 'New Folder' button?
private bool showNewFolderButton;
// set to True when selectedPath is set after the dialog box returns
// set to False when selectedPath is set via the SelectedPath property.
// Warning! Be careful about race conditions when touching this variable.
// This variable is determining if the PathDiscovery security check should
// be bypassed or not.
private bool selectedPathNeedsCheck;
// Callback function for the folder browser dialog (see VSWhidbey 551866)
private UnsafeNativeMethods.BrowseCallbackProc callback;
///
///
///
/// Initializes a new instance of the class.
///
///
public FolderBrowserDialog()
{
Reset();
}
///
///
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new event EventHandler HelpRequest
{
add
{
base.HelpRequest += value;
}
remove
{
base.HelpRequest -= value;
}
}
///
///
/// Determines if the 'New Folder' button should be exposed.
///
[
Browsable(true),
DefaultValue(true),
Localizable(false),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogShowNewFolderButton)
]
public bool ShowNewFolderButton
{
get
{
return showNewFolderButton;
}
set
{
showNewFolderButton = value;
}
}
///
///
/// Gets the directory path of the folder the user picked.
/// Sets the directory path of the initial folder shown in the dialog box.
///
[
Browsable(true),
DefaultValue(""),
Editor("System.Windows.Forms.Design.SelectedPathEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
Localizable(true),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogSelectedPath)
]
/// SECREVIEW: ReviewImperativeSecurity
/// vulnerability to watch out for: A method uses imperative security and might be constructing the permission using state information or return values that can change while the demand is active.
/// reason for exclude: we want to protect when the dialog has been set by the user - this is directly set when in RunDialog
[SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity")]
public string SelectedPath
{
get
{
if (selectedPath == null || selectedPath.Length == 0)
{
return selectedPath;
}
if (selectedPathNeedsCheck)
{
Debug.WriteLineIf(IntSecurity.SecurityDemand.TraceVerbose, "FileIO(" + selectedPath + ") Demanded");
new FileIOPermission(FileIOPermissionAccess.PathDiscovery, selectedPath).Demand();
}
return selectedPath;
}
set
{
selectedPath = (value == null) ? String.Empty : value;
selectedPathNeedsCheck = false;
}
}
///
///
/// Gets/sets the root node of the directory tree.
///
[
Browsable(true),
DefaultValue(System.Environment.SpecialFolder.Desktop),
Localizable(false),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogRootFolder),
TypeConverter(typeof(SpecialFolderEnumConverter))
]
public System.Environment.SpecialFolder RootFolder
{
get
{
return rootFolder;
}
[SuppressMessage("Microsoft.Performance", "CA1803:AvoidCostlyCallsWherePossible")]
set
{
// FXCop:
// leaving in Enum.IsDefined because this Enum is likely to grow and we dont own it.
if (!Enum.IsDefined(typeof(System.Environment.SpecialFolder), value))
{
throw new InvalidEnumArgumentException("value", (int)value, typeof(System.Environment.SpecialFolder));
}
rootFolder = value;
}
}
///
///
///
/// Gets or sets a description to show above the folders. Here you can provide instructions for
/// selecting a folder.
///
///
[
Browsable(true),
DefaultValue(""),
Localizable(true),
SRCategory(SR.CatFolderBrowsing),
SRDescription(SR.FolderBrowserDialogDescription)
]
public string Description
{
get
{
return descriptionText;
}
set
{
descriptionText = (value == null) ? String.Empty : value;
}
}
///
/// Helper function that returns the IMalloc interface used by the shell.
///
private static UnsafeNativeMethods.IMalloc GetSHMalloc()
{
UnsafeNativeMethods.IMalloc[] malloc = new UnsafeNativeMethods.IMalloc[1];
UnsafeNativeMethods.Shell32.SHGetMalloc(malloc);
return malloc[0];
}
///
///
///
/// Resets all properties to their default values.
///
///
public override void Reset()
{
rootFolder = System.Environment.SpecialFolder.Desktop;
descriptionText = String.Empty;
selectedPath = String.Empty;
selectedPathNeedsCheck = false;
showNewFolderButton = true;
}
///
///
/// Implements running of a folder browser dialog.
///
protected override bool RunDialog(IntPtr hWndOwner)
{
IntPtr pidlRoot = IntPtr.Zero;
bool returnValue = false;
UnsafeNativeMethods.Shell32.SHGetSpecialFolderLocation(hWndOwner, (int) rootFolder, ref pidlRoot);
if (pidlRoot == IntPtr.Zero)
{
UnsafeNativeMethods.Shell32.SHGetSpecialFolderLocation(hWndOwner, NativeMethods.CSIDL_DESKTOP, ref pidlRoot);
if (pidlRoot == IntPtr.Zero)
{
throw new InvalidOperationException(SR.GetString(SR.FolderBrowserDialogNoRootFolder));
}
}
int mergedOptions = (int) UnsafeNativeMethods.BrowseInfos.NewDialogStyle;
if (!showNewFolderButton)
{
mergedOptions += (int) UnsafeNativeMethods.BrowseInfos.HideNewFolderButton;
}
// The SHBrowserForFolder dialog is OLE/COM based, and documented as only being safe to use under the STA
// threading model if the BIF_NEWDIALOGSTYLE flag has been requested (which we always do in mergedOptions
// above). So make sure OLE is initialized, and throw an exception if caller attempts to invoke dialog
// under the MTA threading model (...dialog does appear under MTA, but is totally non-functional).
if (Control.CheckForIllegalCrossThreadCalls && Application.OleRequired() != System.Threading.ApartmentState.STA)
{
throw new System.Threading.ThreadStateException(SR.GetString(SR.DebuggingExceptionOnly, SR.GetString(SR.ThreadMustBeSTA)));
}
IntPtr pidlRet = IntPtr.Zero;
IntPtr pszDisplayName = IntPtr.Zero;
IntPtr pszSelectedPath = IntPtr.Zero;
try
{
// Construct a BROWSEINFO
UnsafeNativeMethods.BROWSEINFO bi = new UnsafeNativeMethods.BROWSEINFO();
pszDisplayName = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
pszSelectedPath = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
this.callback = new UnsafeNativeMethods.BrowseCallbackProc(this.FolderBrowserDialog_BrowseCallbackProc);
bi.pidlRoot = pidlRoot;
bi.hwndOwner = hWndOwner;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = descriptionText;
bi.ulFlags = mergedOptions;
bi.lpfn = callback;
bi.lParam = IntPtr.Zero;
bi.iImage = 0;
// And show the dialog
pidlRet = UnsafeNativeMethods.Shell32.SHBrowseForFolder(bi);
if (pidlRet != IntPtr.Zero)
{
// Then retrieve the path from the IDList
UnsafeNativeMethods.Shell32.SHGetPathFromIDList(pidlRet, pszSelectedPath);
// set the flag to True before selectedPath is set to
// assure security check and avoid bogus race condition
selectedPathNeedsCheck = true;
// Convert to a string
selectedPath = Marshal.PtrToStringAuto(pszSelectedPath);
returnValue = true;
}
}
finally
{
UnsafeNativeMethods.IMalloc malloc = GetSHMalloc();
malloc.Free(pidlRoot);
if (pidlRet != IntPtr.Zero)
{
malloc.Free(pidlRet);
}
// Then free all the stuff we've allocated or the SH API gave us
if (pszSelectedPath != IntPtr.Zero)
{
Marshal.FreeHGlobal(pszSelectedPath);
}
if (pszDisplayName != IntPtr.Zero)
{
Marshal.FreeHGlobal(pszDisplayName);
}
this.callback = null;
}
return returnValue;
}
///
/// Callback function used to enable/disable the OK button,
/// and select the initial folder.
///
private int FolderBrowserDialog_BrowseCallbackProc(IntPtr hwnd,
int msg,
IntPtr lParam,
IntPtr lpData)
{
switch (msg)
{
case NativeMethods.BFFM_INITIALIZED:
// Indicates the browse dialog box has finished initializing. The lpData value is zero.
if (selectedPath.Length != 0)
{
// Try to select the folder specified by selectedPath
UnsafeNativeMethods.SendMessage(new HandleRef(null, hwnd), (int) NativeMethods.BFFM_SETSELECTION, 1, selectedPath);
}
break;
case NativeMethods.BFFM_SELCHANGED:
// Indicates the selection has changed. The lpData parameter points to the item identifier list for the newly selected item.
IntPtr selectedPidl = lParam;
if (selectedPidl != IntPtr.Zero)
{
IntPtr pszSelectedPath = Marshal.AllocHGlobal(NativeMethods.MAX_PATH * Marshal.SystemDefaultCharSize);
// Try to retrieve the path from the IDList
bool isFileSystemFolder = UnsafeNativeMethods.Shell32.SHGetPathFromIDList(selectedPidl, pszSelectedPath);
Marshal.FreeHGlobal(pszSelectedPath);
UnsafeNativeMethods.SendMessage(new HandleRef(null, hwnd), (int) NativeMethods.BFFM_ENABLEOK, 0, isFileSystemFolder ? 1 : 0);
}
break;
}
return 0;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ServiceInfo.cs
- SafeEventLogWriteHandle.cs
- PartitionedDataSource.cs
- TextComposition.cs
- TemplateBindingExpressionConverter.cs
- ListSourceHelper.cs
- RuntimeArgumentHandle.cs
- PartialCachingControl.cs
- FontCollection.cs
- QueueProcessor.cs
- SoapReflectionImporter.cs
- CharStorage.cs
- MediaEntryAttribute.cs
- DataGridViewCellValueEventArgs.cs
- WrappingXamlSchemaContext.cs
- RankException.cs
- BrowsableAttribute.cs
- ArrangedElementCollection.cs
- DBCommand.cs
- BindingContext.cs
- BigIntegerStorage.cs
- StateBag.cs
- TableCellAutomationPeer.cs
- WebPartHeaderCloseVerb.cs
- LineSegment.cs
- VScrollBar.cs
- SapiRecoContext.cs
- EntityProxyTypeInfo.cs
- OperationAbortedException.cs
- GridViewColumnHeader.cs
- NamedPermissionSet.cs
- RijndaelCryptoServiceProvider.cs
- ControlCollection.cs
- Accessible.cs
- KeyManager.cs
- ChannelManagerBase.cs
- Int32CollectionValueSerializer.cs
- BamlRecordHelper.cs
- EdmToObjectNamespaceMap.cs
- SelectorItemAutomationPeer.cs
- TextMarkerSource.cs
- FacetValueContainer.cs
- Color.cs
- OdbcException.cs
- OleDbSchemaGuid.cs
- EnumerableCollectionView.cs
- TileBrush.cs
- XmlAutoDetectWriter.cs
- List.cs
- ButtonBase.cs
- SQLBytesStorage.cs
- Compiler.cs
- UIElementIsland.cs
- TypeUtils.cs
- PrintDocument.cs
- DataView.cs
- XmlBinaryReader.cs
- XPathNode.cs
- ProjectionCamera.cs
- CacheDict.cs
- RecipientInfo.cs
- _ListenerAsyncResult.cs
- SqlCacheDependency.cs
- TdsParserSessionPool.cs
- NonSerializedAttribute.cs
- XmlTextReader.cs
- TemplateDefinition.cs
- SqlBooleanMismatchVisitor.cs
- DataObjectSettingDataEventArgs.cs
- CustomPeerResolverService.cs
- RTLAwareMessageBox.cs
- __Error.cs
- ResourceAttributes.cs
- HtmlLiteralTextAdapter.cs
- graph.cs
- IncomingWebRequestContext.cs
- xdrvalidator.cs
- HttpListenerContext.cs
- ExpressionBuilderCollection.cs
- TemplatePropertyEntry.cs
- HttpVersion.cs
- TextStore.cs
- AsyncPostBackTrigger.cs
- DataServiceEntityAttribute.cs
- MultiView.cs
- Sorting.cs
- exports.cs
- VersionedStreamOwner.cs
- FlowDecision.cs
- EditingCoordinator.cs
- DataServiceProviderWrapper.cs
- ExtensionWindow.cs
- SessionPageStatePersister.cs
- Triangle.cs
- ToolStripMenuItemCodeDomSerializer.cs
- ExpressionList.cs
- XmlDeclaration.cs
- HttpCacheVary.cs
- DbConnectionFactory.cs
- HttpRequestCacheValidator.cs