CARA: Tenggelam dikelola C# peristiwa di Internet Explorer Script

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 313891 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan Anda bagaimana untuk tenggelam dikelola peristiwa dari Component Object Model (COM) klien (tidak dikelola kode) ketika Anda menulis.NET Windows kontrol. Misalnya, Anda tenggelam dikelola peristiwa dari klien COM ketika Anda menjalankan skrip pada Internet Explorer.

Untuk informasi tentang cara untuk menulis dan menggunakan jenis dikelola dari COM, merujuk kepada Microsoft berikut.NET Framework Developer panduan dokumentasi:
Mengekspos.NET Framework komponen untuk COM
.aspx http://msdn2.Microsoft.com/en-us/library/zsfww439 (vs.71)

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
  • Microsoft Visual Studio.NET
  • Microsoft Internet Explorer (pemrograman) versi 5.5 atau yang lebih baru

Langkah-langkah ke wastafel berhasil acara di Internet Explorer Script

  1. Membuat Windows Forms kontrol kustom:
    1. Mulai Microsoft Visual Studio.NET.
    2. Pada Berkas menu, titik Baru, lalu klik Project.
    3. Dalam Proyek baru kotak dialog, klik Visual C# proyek di bawah Jenis proyek, lalu klik Windows Control perpustakaan di bawah Pola acu.
  2. Menentukan sumber antarmuka untuk acara akan terbuka.
  3. Tambahkan GuidAttribute kelas untuk antarmuka sumber. Anda harus memformat string yang Anda lulus untuk atribut sebagai argumen konstruktor dapat diterima untuk jenis Guid. Anda dapat menggunakan berkas Guidgen.exe untuk membuat GUID tidak terpakai.
    [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]
        
        public interface ControlEvents 
    
    		
        {
            //  Insert code here.
        }
    					
  4. Tambahkan InterfaceType atribut ke antarmuka sumber untuk mengekspos COM sebagai IDispatch antarmuka:
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface ControlEvents 
    
    		
        {
           
            // Insert code here.
        }
    					
  5. Tambahkan DispIdAttribute untuk setiap anggota di antarmuka sumber untuk menentukan COM pengiriman pengenal (DISPID) dari metode atau lapangan:
    public interface ControlEvents 
    	
        {
            [DispIdAttribute(0x60020000)]
            void ClickEvent(int x, int y);
        }
    					
  6. Membuat jenis peristiwa baru untuk membungkus acara yang diinginkan untuk mengekspos.
  7. Mengimplementasikan antarmuka sumber pada Windows Forms kontrol kustom.
  8. Tambahkan ComSourceInterfaces atribut untuk kontrol untuk mengidentifikasi daftar antarmuka yang terkena sebagai COM acara sumber:
    [ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ControlEvents))]
    	public class MyWindowControl : System.Windows.Forms.UserControl 
        {
    
          // Insert code here.
        }
    					
  9. Mengkompilasi kontrol sebagai dynamic-link library (DLL) file.
  10. Membuat skrip blok pada halaman HTML untuk menghubungkan acara. Misalnya:
    <!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. Pada sistem klien, menggunakan.NET Framework konfigurasi alat (Mscorcfg.msc) untuk memberikan Majelis individu izin yang diperlukan.

Daftar kode lengkap

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);
			}
		}
	}
}
				

REFERENSI

Untuk informasi lebih lanjut, lihat untuk Website Microsoft berikut:
Penanganan dan kegiatan pengumpulan
.aspx http://msdn2.Microsoft.com/en-us/library/edzehd2t (vs.71)

.NET Framework alat konfigurasi (Mscorcfg.msc)
.aspx http://msdn2.Microsoft.com/en-us/library/2bc0cxhc (vs.71)

Interoperasi dengan kode tidak dikelola
.aspx http://msdn2.Microsoft.com/en-us/library/sd10k43k (vs.71)

Tuan rumah aman, ringan klien-sisi kontrol dalam Microsoft Internet Explorer
http://MSDN.Microsoft.com/msdnmag/Issues/02/01/UserCtrl/default.aspx
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
316510 BUG: Keamanan pengecualian ketika Anda menggunakan Event Handler di Internet Explorer

Properti

ID Artikel: 313891 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C# .NET 2002 Standard Edition
Kata kunci: 
kbcominterop kbhowto kbhowtomaster kbsample kbmt KB313891 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:313891

Berikan Masukan

 

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