EventsTab Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет вкладку PropertyTab, которая может отображать события для выделения и связывания.
public ref class EventsTab : System::Windows::Forms::Design::PropertyTab
public class EventsTab : System.Windows.Forms.Design.PropertyTab
type EventsTab = class
inherit PropertyTab
Public Class EventsTab
Inherits PropertyTab
- Наследование
Примеры
В следующем примере кода приведен пример EventsTab. При выборе EventsTab список всех событий компонента в порядке типа делегата.
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Collections;
using namespace System::Drawing;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Binary;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
ref class TypeEventsTab;
// This component adds a TypeEventsTab to the Properties Window.
[PropertyTabAttribute(TypeEventsTab::typeid,PropertyTabScope::Document)]
public ref class TypeEventsTabComponent: public Component
{
public:
TypeEventsTabComponent(){}
};
// This example events tab lists events by their delegate type.
[System::Security::Permissions::PermissionSetAttribute
(System::Security::Permissions::SecurityAction::InheritanceDemand, Name="FullTrust")]
[System::Security::Permissions::PermissionSetAttribute
(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")]
public ref class TypeEventsTab: public System::Windows::Forms::Design::EventsTab
{
private:
// This string contains a Base-64 encoded and serialized example
// property tab image.
[BrowsableAttribute(true)]
String^ img;
IServiceProvider^ sp;
public:
TypeEventsTab( IServiceProvider^ sp )
: EventsTab( sp )
{
this->sp = sp;
String^ s = "AAEAAAD/////AQAAAAAAAAAMAgAAAFRTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0xLjAuMzMwMC4w"
"LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRt"
"YXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAtgIAAAJCTbYCAAAAAAAANgAAACgAAAANAAAAEAAAAAEAGAAAAAAAAAAAAMQOAADED"
"gAAAAAAAAAAAADO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tn/ztbZztbZHh4eHh4eztbZztbZztbZztbZztb"
"ZztbZztbZztbZztbZ/87W2c7W2QDBAB4eHh4eHs7W2c7W2c7W2c7W2c7W2c7W2c7W2c7W2f/O1tnO1tnO1tkAwQAeHh4eHh7O1tnO1"
"tnO1tnO1tnO1tnO1tnO1tn/ztbZztbZlJSU////AMEAHh4eHh4eztbZztbZztbZztbZztbZztbZ/87W2c7W2c7W2ZSUlP///wDBAB4"
"eHh4eHs7W2c7W2c7W2c7W2c7W2f/O1tnO1tnO1tnO1tmUlJT///8AwQAeHh4eHh7O1tnO1tnO1tnO1tn/ztbZHh4eHh4eHh4eHh4eH"
"h4e////AIAAHh4eHh4eztbZztbZztbZ/87W2ZSUlP///wDBAADBAADBAADBAADBAACAAB4eHh4eHs7W2c7W2f/O1tnO1tmUlJT///8"
"AwQAAgAAeHh4eHh7O1tnO1tnO1tnO1tnO1tn/ztbZztbZztbZlJSU////AMEAAIAAHh4eHh4eztbZztbZztbZztbZ/87W2c7W2c7W2"
"c7W2ZSUlP///wDBAACAAB4eHh4eHs7W2c7W2c7W2f/O1tnO1tnO1tnO1tnO1tmUlJT///8AwQAAgAAeHh4eHh7O1tnO1tn/ztbZztb"
"ZztbZztbZztbZztbZlJSU////AMEAAIAAHh4eHh4eztbZ/87W2c7W2c7W2c7W2c7W2c7W2c7W2ZSUlP///wDBAACAAB4eHs7W2f/O1"
"tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tn/Cw==";
img = s;
}
// Returns the properties of the specified component extended with a
// CategoryAttribute reflecting the name of the type of the property.
virtual System::ComponentModel::PropertyDescriptorCollection^ GetProperties( ITypeDescriptorContext^ /*context*/, Object^ component, array<System::Attribute^>^attributes ) override
{
// Obtain an instance of the IEventBindingService.
IEventBindingService^ eventPropertySvc = dynamic_cast<IEventBindingService^>(sp->GetService( IEventBindingService::typeid ));
// Return if an IEventBindingService could not be obtained.
if ( eventPropertySvc == nullptr )
return gcnew PropertyDescriptorCollection( nullptr );
// Obtain the events on the component.
EventDescriptorCollection^ events = TypeDescriptor::GetEvents( component, attributes );
// Create an array of the events, where each event is assigned
// a category matching its type.
array<EventDescriptor^>^newEvents = gcnew array<EventDescriptor^>(events->Count);
for ( int i = 0; i < events->Count; i++ )
{
array<Attribute^>^temp = {gcnew CategoryAttribute( events[ i ]->EventType->FullName )};
newEvents[ i ] = TypeDescriptor::CreateEvent( events[ i ]->ComponentType, events[ i ], temp );
}
events = gcnew EventDescriptorCollection( newEvents );
// Return event properties for the event descriptors.
return eventPropertySvc->GetEventProperties( events );
}
property String^ TabName
{
// Provides the name for the event property tab.
virtual String^ get() override
{
return "Events by Type";
}
}
property System::Drawing::Bitmap^ Bitmap
{
// Provides an image for the event property tab.
virtual System::Drawing::Bitmap^ get() override
{
System::Drawing::Bitmap^ bmp = gcnew System::Drawing::Bitmap( DeserializeFromBase64Text( img ) );
return bmp;
}
}
private:
// This method can be used to retrieve an Image from a block of
// Base64-encoded text.
Image^ DeserializeFromBase64Text( String^ text )
{
Image^ img = nullptr;
array<Byte>^memBytes = Convert::FromBase64String( text );
IFormatter^ formatter = gcnew BinaryFormatter;
MemoryStream^ stream = gcnew MemoryStream( memBytes );
img = dynamic_cast<Image^>(formatter->Deserialize( stream ));
stream->Close();
return img;
}
};
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace EventsTabExample
{
// This component adds a TypeEventsTab to the Properties Window.
[PropertyTabAttribute(typeof(TypeEventsTab), PropertyTabScope.Document)]
public class TypeEventsTabComponent : Component
{
public TypeEventsTabComponent()
{
}
}
// This example events tab lists events by their delegate type.
public class TypeEventsTab : System.Windows.Forms.Design.EventsTab
{
[BrowsableAttribute(true)]
// This string contains a Base-64 encoded and serialized example
// property tab image.
private string img = "AAEAAAD/////AQAAAAAAAAAMAgAAAFRTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0xLjAuMzMwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAtgIAAAJCTbYCAAAAAAAANgAAACgAAAANAAAAEAAAAAEAGAAAAAAAAAAAAMQOAADEDgAAAAAAAAAAAADO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tn/ztbZztbZHh4eHh4eztbZztbZztbZztbZztbZztbZztbZztbZztbZ/87W2c7W2QDBAB4eHh4eHs7W2c7W2c7W2c7W2c7W2c7W2c7W2c7W2f/O1tnO1tnO1tkAwQAeHh4eHh7O1tnO1tnO1tnO1tnO1tnO1tnO1tn/ztbZztbZlJSU////AMEAHh4eHh4eztbZztbZztbZztbZztbZztbZ/87W2c7W2c7W2ZSUlP///wDBAB4eHh4eHs7W2c7W2c7W2c7W2c7W2f/O1tnO1tnO1tnO1tmUlJT///8AwQAeHh4eHh7O1tnO1tnO1tnO1tn/ztbZHh4eHh4eHh4eHh4eHh4e////AIAAHh4eHh4eztbZztbZztbZ/87W2ZSUlP///wDBAADBAADBAADBAADBAACAAB4eHh4eHs7W2c7W2f/O1tnO1tmUlJT///8AwQAAgAAeHh4eHh7O1tnO1tnO1tnO1tnO1tn/ztbZztbZztbZlJSU////AMEAAIAAHh4eHh4eztbZztbZztbZztbZ/87W2c7W2c7W2c7W2ZSUlP///wDBAACAAB4eHh4eHs7W2c7W2c7W2f/O1tnO1tnO1tnO1tnO1tmUlJT///8AwQAAgAAeHh4eHh7O1tnO1tn/ztbZztbZztbZztbZztbZztbZlJSU////AMEAAIAAHh4eHh4eztbZ/87W2c7W2c7W2c7W2c7W2c7W2c7W2ZSUlP///wDBAACAAB4eHs7W2f/O1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tnO1tn/Cw==";
private IServiceProvider sp;
public TypeEventsTab(IServiceProvider sp) : base(sp)
{
this.sp = sp;
}
// Returns the properties of the specified component extended with a
// CategoryAttribute reflecting the name of the type of the property.
public override System.ComponentModel.PropertyDescriptorCollection
GetProperties(ITypeDescriptorContext context, object component,
System.Attribute[] attributes)
{
// Obtain an instance of the IEventBindingService.
IEventBindingService eventPropertySvc = (IEventBindingService)
sp.GetService(typeof(IEventBindingService));
// Return if an IEventBindingService could not be obtained.
if (eventPropertySvc == null)
return new PropertyDescriptorCollection(null);
// Obtain the events on the component.
EventDescriptorCollection events =
TypeDescriptor.GetEvents(component, attributes);
// Create an array of the events, where each event is assigned
// a category matching its type.
EventDescriptor[] newEvents = new EventDescriptor[events.Count];
for (int i = 0; i < events.Count; i++)
newEvents[i] = TypeDescriptor.CreateEvent(events[i].ComponentType, events[i],
new CategoryAttribute(events[i].EventType.FullName));
events = new EventDescriptorCollection(newEvents);
// Return event properties for the event descriptors.
return eventPropertySvc.GetEventProperties(events);
}
// Provides the name for the event property tab.
public override string TabName
{
get
{
return "Events by Type";
}
}
// Provides an image for the event property tab.
public override System.Drawing.Bitmap Bitmap
{
get
{
Bitmap bmp = new Bitmap(DeserializeFromBase64Text(img));
return bmp;
}
}
// This method can be used to retrieve an Image from a block of
// Base64-encoded text.
private Image DeserializeFromBase64Text(string text)
{
Image img = null;
byte[] memBytes = Convert.FromBase64String(text);
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream(memBytes);
img = (Image)formatter.Deserialize(stream);
stream.Close();
return img;
}
}
}
Конструкторы
EventsTab(IServiceProvider) |
Инициализирует новый экземпляр класса EventsTab. |
Свойства
Bitmap |
Получает точечный рисунок, отображаемый для PropertyTab. (Унаследовано от PropertyTab) |
Components |
Получает или задает массив компонентов, с которыми сопоставлена вкладка со свойствами. (Унаследовано от PropertyTab) |
HelpKeyword |
Получает ключевое слово справки для вкладки. |
TabName |
Получает имя вкладки. |
Методы
CanExtend(Object) |
Получает значение, определяющее возможность расширения заданного объекта. |
Dispose() |
Освобождает все ресурсы, используемые объектом PropertyTab. (Унаследовано от PropertyTab) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом PropertyTab, а при необходимости освобождает также управляемые ресурсы. (Унаследовано от PropertyTab) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetDefaultProperty(Object) |
Получает свойство, заданное по умолчанию, от заданного объекта. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Получает все свойства вкладки событий, которые совпадают с заданными атрибутами и контекстом. |
GetProperties(Object) |
Получает свойства указанного компонента. (Унаследовано от PropertyTab) |
GetProperties(Object, Attribute[]) |
Получает все свойства вкладки событий, которые совпадают с заданными атрибутами. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |