602
Chương 15: Khả năng liên tác mã lệnh không-được-quản-lý
Console.ReadLine();
}
}
9.
9.
S d ng đi u ki m ActiveX trong .NET
ử ụ
ề
ể
S d ng đi u ki m ActiveX trong .NET
ử ụ
ề
ể
-
-
client
client
Bạn cần đặt một điều kiểm ActiveX trên một cửa sổ ứng dụng .NET Framework.
Sử dụng một RCW (cũng giống như với một thành phần COM bình thường). Để
làm việc với điều kiểm ActiveX khi thiết kế, thêm nó vào hộp công cụ của Visual
Studio .NET.
.NET Framework hỗ trợ như nhau đối với tất cả các thành phần COM, bao gồm điều kiểm
ActiveX. Điều khác nhau cơ bản là lớp RCW (cho điều kiểm ActiveX) dẫn xuất từ kiểu .NET
đặc biệt
System.Windows.Forms.AxHost
. Về mặt kỹ thuật, bạn thêm
AxHost
vào form, và nó sẽ
giao tiếp với điều kiểm ActiveX phía hậu trường. Vì dẫn xuất từ
System.Windows.Forms.Control
, nên
AxHost
cũng có các thuộc tính, phương thức, và sự kiện
chuẩn như
Location
,
Size
,
Anchor
,.. Nếu RCW được sinh tự động, các lớp
AxHost
luôn bắt đầu
bằng
Ax
.
Bạn có thể tạo một RCW cho một điều kiểm ActiveX cũng giống như cho bất cứ thành phần
COM nào khác bằng công cụ Tlbimp.exe hoặc tính năng Add Reference trong Visual Studio
.NET, sau đó lập trình để tạo điều kiểm. Tuy nhiên, một cách tiếp cận dễ hơn trong Visual
Studio .NET là thêm điều kiểm ActiveX vào hộp công cụ (xem mục 11.4 để biết thêm chi tiết).
Chẳng có gì xảy ra khi bạn thêm một điều kiểm ActiveX vào hộp công cụ. Tuy nhiên, bạn có
thể sử dụng biểu tượng trong hộp công cụ để thêm một thể hiện của điều kiểm vào form. Lần
đầu bạn làm việc này, Visual Studio .NET sẽ tạo một Interop Assembly và thêm nó vào dự án
của bạn. Ví dụ, nếu bạn thêm điều kiểm Microsoft Masked Edit (không có điều kiểm .NET
tương đương), Visual Studio .NET sẽ tạo một RCW Assembly có tên là AxInterop.MSMask.dll.
Dưới đây là đoạn mã trong vùng designer dùng để tạo một thể hiện của điều kiểm này và thêm
nó vào form:
this.axMaskEdBox1 = new AxMSMask.AxMaskEdBox();
((System.ComponentModel.ISupportInitialize)(this.axMaskEdBox1)).
BeginInit();
//
// axMaskEdBox1
//
this.axMaskEdBox1.Location = new System.Drawing.Point(16, 12);
this.axMaskEdBox1.Name = "axMaskEdBox1";
this.axMaskEdBox1.OcxState = ((System.Windows.Forms.AxHost.State)