SelectFromCollection Method (X509Certificate2Collection, String, String, X509SelectionFlag)

X509Certificate2UI.SelectFromCollection Method (X509Certificate2Collection, String, String, X509SelectionFlag)

Note: This method is new in the .NET Framework version 2.0.

Displays a dialog box for selecting an X.509 certificate from a certificate collection.

Namespace: System.Security.Cryptography.X509Certificates
Assembly: System.Security (in

public static X509Certificate2Collection SelectFromCollection (
	X509Certificate2Collection certificates,
	string title,
	string message,
	X509SelectionFlag selectionFlag
public static X509Certificate2Collection SelectFromCollection (
	X509Certificate2Collection certificates, 
	String title, 
	String message, 
	X509SelectionFlag selectionFlag
public static function SelectFromCollection (
	certificates : X509Certificate2Collection, 
	title : String, 
	message : String, 
	selectionFlag : X509SelectionFlag
) : X509Certificate2Collection



A collection of X.509 certificates to select from.


The title of the dialog box.


A descriptive message to guide the user. The message is displayed in the dialog box.


One of the X509SelectionFlag values that specifies whether single or multiple selections are allowed.

Return Value

An X509Certificate2Collection object that contains the selected certificate or certificates.

Exception typeCondition


The selectionFlag parameter is not a valid flag.


The certificates parameter is a null reference (Nothing in Visual Basic).


The certificates parameter is invalid.

Use the SelectFromCollection method if you require users to manually select X.509 certificates using a dialog box. If no user interaction is required, use the X509Certificate2Collection.Find method.

The following code example demonstrates how to display user interface dialogs to select and view X.509 certificates.

using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class CertSelect
	static void Main()
			X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
			store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
			X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
			X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false);
			X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);
			Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine);
				foreach (X509Certificate2 x509 in scollection)
					byte[] rawdata = x509.RawData;
					Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine);
					Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine);
					Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine);
					Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine);
					Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine);
					Console.WriteLine("Private Key: {0}{1}",x509.PrivateKey.ToXmlString(false),Environment.NewLine);
					Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine);
					Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine);
					Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine);
		catch (CryptographicException)
				   Console.WriteLine("Information could not be written out for this certificate.");

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

© 2016 Microsoft