ПРАКТИЧЕСКОЕ руководство: Приемник событий управляемых C# в Internet Explorer сценарий

Переводы статьи Переводы статьи
Код статьи: 313891 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как реализация приема управляемых событий от клиентов модели компонентных объектов (COM) (неуправляемый код) при написании.NET Windows управляет. Например вы приемник управляемых событий от клиентов COM при выполнении сценария в обозревателе Internet Explorer.

Для получения сведений о том, как писать и использование управляемых типов из COM обратитесь к следующей Microsoft.NET Framework разработчик документации руководства:
Предоставление доступа.NET Framework компоненты COM
http://msdn2.Microsoft.com/en-us/library/zsfww439 (vs.71) .aspx

Требования

В следующем списке представлены оборудования, программного обеспечения, сетевой инфраструктуры и пакетов обновления, необходимо:
  • Microsoft Visual Studio.NET
  • Microsoft Internet Explorer версии 5.5 или более поздней версии (программирование)

Действия приемник управляемых событий в Internet Explorer сценарий

  1. Создание пользовательского элемента управления Windows Forms:
    1. Запустите Microsoft Visual Studio.NET.
    2. На Файл Выберите пункт Новый, а затем нажмите кнопку Проект.
    3. В Новый проект диалоговое окно, нажмите кнопку Проекты Visual C# Из списка Типы проектов, а затем нажмите кнопку Библиотека элементов управления Windows Из списка Шаблоны.
  2. Определение интерфейса источника для события должен быть предоставлен.
  3. Добавить Атрибут GuidAttribute класс, интерфейс источника. Строка, передаваемая атрибуту как допустимым аргументом конструктора для типа Guid, необходимо отформатировать. Файл Guidgen.exe можно использовать для создания неиспользуемый идентификатор GUID.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. Добавить InterfaceType Атрибут источника интерфейс, предоставляемый COM как Интерфейс IDispatch интерфейс:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. Добавить DispIdAttribute идентификатор (DISPID) метод или поле отправки к любым элементам интерфейса источника для указания COM:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Создайте новый тип события, переносить по наступлении определенного события для предоставления.
  7. Реализация интерфейса источника для пользовательского элемента управления Windows Forms.
  8. Добавить ComSourceInterfaces атрибут в элемент управления, чтобы определить список интерфейсов, которые предоставляются в виде источников событий COM:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Компиляция элемента управления в файл библиотеки динамической компоновки (DLL).
  10. Создайте блок сценария на странице HTML для обработки события. Например:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=iso-8859-1' />
    
    <HTML>
    	<HEAD>
    		<TITLE>Sink managed event in Internet Explorer</TITLE>
    		
    		
    	</HEAD>
    	
    	<BODY>
    		
    		<OBJECT id="ctrl" classid="YourDllName.dll#ActiveXSourcing.MyWindowControl">
    		</OBJECT>
    		<SCRIPT LANGUAGE="JScript">
                function ctrl::ClickEvent(a,b)
                {
                    alert("MyWindowControl_ClickEvent");
                }
    		</SCRIPT>
    		
    	</BODY>
    </HTML>
    					
  11. Использовать в любой системе клиента.NET Framework Configuration tool (Mscorcfg.msc) для предоставления сборке отдельных разрешений, которые требуются.

Полный пример кода

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ActiveXSourcing
{
	public delegate void ClickEventHandler(int x, int y); 

	//Source interface for events to be exposed.
	//Add GuidAttribute to the source interface to supply an explicit System.Guid.
	//Add InterfaceTypeAttribute to indicate that interface is IDispatch interface.
	[GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
	[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
	public interface ControlEvents 

		//Add a DisIdAttribute to any members in the source 
		//interface to specify the COM DispId.
	{
		[DispIdAttribute(0x60020000)]
		void ClickEvent(int x, int y);
	}

	//Add a ComSourceInterfaces attribute to the control to 
	//identify the list of interfaces that are exposed as COM event sources. 
	[ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
	public class MyWindowControl : System.Windows.Forms.UserControl 
		//, ComInteropControlInterface
	{
        System.Windows.Forms.TextBox tx = new TextBox();

		private void InitializeComponent()
		{
			
			this.Name = "MyWindowControl";

		}
	
		event ActiveXSourcing.ClickEventHandler ClickEvent;
    	
		public MyWindowControl() : base()
		{				               

			initMyWindowControl();

		}
        
		private void initMyWindowControl() 
		{

			Size = new System.Drawing.Size(300, 50);
			tx.Text = "Click on the TextBox to invoke  'ClickEvent'";
			tx.Size = this.Size;                  
			tx.Click += new System.EventHandler(ClickHandler);
			this.Controls.Add(tx);
			
		}
            
        
		private void ClickHandler(object sender, System.EventArgs e)
		{
			if (ClickEvent != null) 
			{
				ClickEvent(0, 0);
			}
		}
	}
}
				

Ссылки

Для получения дополнительных сведений обратитесь на следующие веб-узлы корпорации Майкрософт:
Обработка и создание событий
http://msdn2.Microsoft.com/en-us/library/edzehd2t (vs.71) .aspx

.Средство настройки NET Framework (Mscorcfg.msc)
http://msdn2.Microsoft.com/en-us/library/2bc0cxhc (vs.71) .aspx

Взаимодействие с неуправляемым кодом
http://msdn2.Microsoft.com/en-us/library/sd10k43k (vs.71) .aspx

Узел защиты, упрощенные элементы управления со стороны клиента в Microsoft Internet Explorer
http://MSDN.Microsoft.com/msdnmag/issues/02/01/UserCtrl/Default.aspx
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
316510 Ошибка: Исключение безопасности при использовании обработчиков событий в обозревателе Internet Explorer

Свойства

Код статьи: 313891 - Последний отзыв: 7 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual C# .NET 2002 Standard Edition
Ключевые слова: 
kbcominterop kbhowto kbhowtomaster kbsample kbmt KB313891 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:313891

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com