UserControl クラス
アセンブリ: System.Web (system.web.dll 内)
構文
Public Class UserControl Inherits TemplateControl Implements IAttributeAccessor, INamingContainer, IUserControlDesignerAccessor
public class UserControl : TemplateControl, IAttributeAccessor, INamingContainer, IUserControlDesignerAccessor
public ref class UserControl : public TemplateControl, IAttributeAccessor, INamingContainer, IUserControlDesignerAccessor
public class UserControl extends TemplateControl implements IAttributeAccessor, INamingContainer, IUserControlDesignerAccessor
public class UserControl extends TemplateControl implements IAttributeAccessor, INamingContainer, IUserControlDesignerAccessor
UserControl クラスは、.ascx 拡張子を持つファイルと関連付けられています。これらのファイルは、実行時に UserControl オブジェクトとしてコンパイルされ、サーバー メモリにキャッシュされます。
ある .ascx ファイルを他のファイルで宣言し、後者を Web フォーム ページに挿入することにより、ユーザー コントロールを入れ子にできます。
ユーザー コントロールは ASP.NET Web フォーム ページに格納されており、Web 開発者は通常使用する Web UI を簡単に取り込むことができます。ユーザー コントロールは、Page オブジェクトと似た方法でインスタンス化およびキャッシュされます。ただし、ユーザー コントロールは、ページとは異なり、独立して呼び出すことはできません。ユーザー コントロールは、ページまたはページを格納している他のユーザー コントロールからだけ呼び出すことができます。
分離コード技法を使用してユーザー コントロールを作成する必要がある場合は、このクラスから派生させます。この技法を使用して Web フォーム ページを開発している場合にお勧めします。
ユーザー コントロールの作成方法については、「ASP.NET ユーザー コントロール」を参照してください。
UserControl クラスを継承し、ASP.NET 分離コード クラスとして使用できるクラス (SimpleControl) の定義例を次に示します。このクラスでは、TextBox、Label、Button の 3 つの Web サーバー コントロールを使用します。また、TextBox.Text プロパティの値を他の 2 つの文字列と連結して Label.Text プロパティに設定する myButton_Click メソッドも定義しています。
Imports System Imports System.Web.UI Imports System.Web.UI.WebControls Public Class SimpleControl Inherits UserControl Public name As TextBox Public output As Label Public myButton As Button Public Sub myButton_Click(sender As Object, e As EventArgs) output.Text = "Hello, " + name.Text + "." End Sub End Class
using System; using System.Web.UI; using System.Web.UI.WebControls; public class SimpleControl:UserControl { public TextBox name; public Label output; public Button myButton; public void myButton_Click(object sender, EventArgs e) { output.Text = "Hello, " + name.Text + "."; } }
import System.*; import System.Web.UI.*; import System.Web.UI.WebControls.*; public class SimpleControl extends UserControl { public TextBox name; public Label output; public Button myButton; public void myButton_Click(Object sender, EventArgs e) { output.set_Text("Hello, " + name.get_Text() + "."); } //myButton_Click } //SimpleControl
.ascx ファイルに含まれるマークアップの例を次に示します。前の例の SimpleControl クラスを、この .ascx ファイルのマークアップの分離コード クラスとして使用できます。
<%@ control inherits = "SimpleControl" src = "SimpleControl.vb" %> <table style="background-color: yellow; font: 10pt verdana;border-width:1;border-style:solid;border-color:black;" cellspacing=15> <tr> <td><b>Enter your name here: </b></td> <td><ASP:TextBox id="name" runat="server"/></td> </tr> <tr> <td><b><ASP:Label id="output" runat="server"/></b></td> </tr> <tr> <td></td> <td><asp:button text="Submit" OnClick="myButton_Click" runat="server" /></td> </tr> </table>
<%@ control inherits = "SimpleControl" src = "SimpleControl.cs" %> <table style="background-color:yellow;font: 10pt verdana;border-width:1;border-style:solid;border-color:black;" cellspacing=15> <tr> <td><b>Enter your name here: </b></td> <td><ASP:TextBox id="name" runat="server"/></td> </tr> <tr> <td><b><ASP:Label id="output" runat="server"/></b></td> </tr> <tr> <td></td> <td><asp:button id="myButton" text="Submit" OnClick="myButton_Click" runat="server" /></td> </tr> </table>
<%@ control inherits = "SimpleControl" src = "SimpleControl.jsl" %> <table style="background-color:yellow;font: 10pt verdana;border-width:1;border-style:solid;border-color:black;" cellspacing=15> <tr> <td><b>Enter your name here: </b></td> <td><ASP:TextBox id="name" runat="server"/></td> </tr> <tr> <td><b><ASP:Label id="output" runat="server"/></b></td> </tr> <tr> <td></td> <td><asp:button id="myButton" text="Submit" OnClick="myButton_Click" runat="server" /></td> </tr> </table>
System.Web.UI.Control
System.Web.UI.TemplateControl
System.Web.UI.UserControl
System.Web.UI.MasterPage
System.Web.UI.MobileControls.MobileUserControl
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
UserControl クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文
<ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ Public Class UserControl Inherits ContainerControl
[ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] public class UserControl : ContainerControl
[ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] public ref class UserControl : public ContainerControl
/** @attribute ComVisibleAttribute(true) */ /** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ public class UserControl extends ContainerControl
ComVisibleAttribute(true) ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) public class UserControl extends ContainerControl
UserControl は、ContainerControl を拡張したクラスであり、ユーザー コントロールで必要となる標準の位置設定コードおよびニーモニック処理コードをすべて継承しています。
UserControl を使用すると、1 つのアプリケーションまたは構成内の複数の場所で使用できるコントロールを作成できます。電子メール アドレス (後の例を参照)、電話番号、郵便番号など、ユーザーに入力してもらう共通データを検証するために必要となるコードを含めることもできます。ユーザー コントロールの別の効率的な使用方法として、多くのアプリケーションで共通して使用される静的な項目 (国や地域、市町村名、都道府県名、オフィスの所在地など) を含む ComboBox または ListBox を簡単にプリロードしておくことができます。カスタム コントロールの作成方法の詳細については、「.NET Framework を使用したカスタム Windows フォーム コントロールの開発」を参照してください。
メモ |
---|
ユーザー コントロールのクラスをいくつか含んでいる名前空間を作成し、その名前空間をコンパイルして 1 つの DLL を作成できます。この DLL は、1 つのアプリケーションまたは 1 つの構成内のすべてのアプリケーションで参照したり、配布したりできます。これにより、多くのアプリケーションで同じユーザー コントロールを参照できるため、ユーザー コントロールに格納する要素のレイアウトやコーディングに必要な時間を短縮できます。ユーザー コントロールを使用すると、たとえば、すべてのアドレス情報の入力用ブロックの外観と動作を同じにするなど、アプリケーション内またはアプリケーション間で一貫性を維持することもできます。一貫性を維持することで、アプリケーションはより洗練され、その外観は本格的なものになります。 Windows フォームの UserControl の派生クラスは、フォーム内、別の UserControl 上、Internet Explorer 内の Web ページ上、またはフォーム上にホストされている WebBrowser コントロール内にホストできます。 |
メモ |
---|
UserControl を WebBrowser コントロール内でホストする場合、META タグの値である MSThemeCompatible を使用して visual スタイルを無効にできません。visual スタイルの詳細については、「visual スタイルが使用されているコントロールのレンダリング」を参照してください。 |
Smartphone アプリケーションでこのコントロールを使用するには、Windows Mobile Version 5.0 software for Smartphones を使用する必要があります。
ユーザー情報を取得するために、複数のアプリケーションで再利用できる UserControl を作成するコード例を次に示します。この例では、いくつかの Label コントロール、TextBox コントロール、および ErrorProvider を UserControl に追加して、ユーザー情報を収集します。また、ユーザーの電子メール アドレスを TextBox の Validating イベントで検証し、データ検証に失敗した場合は、ErrorProvider オブジェクトを使用してユーザーに通知します。このコードは、ほかのアプリケーションで参照できるように、後から DLL にコンパイルされます。
Imports System Imports System.Windows.Forms Imports System.Drawing Imports System.ComponentModel Imports Microsoft.VisualBasic Namespace UserControls Public Class MyCustomerInfoUserControl Inherits System.Windows.Forms.UserControl ' Create the controls. Private errorProvider1 As System.Windows.Forms.ErrorProvider Private textName As System.Windows.Forms.TextBox Private textAddress As System.Windows.Forms.TextBox Private textCity As System.Windows.Forms.TextBox Private textStateProvince As System.Windows.Forms.TextBox Private textPostal As System.Windows.Forms.TextBox Private textCountryRegion As System.Windows.Forms.TextBox Private WithEvents textEmail As System.Windows.Forms.TextBox Private labelName As System.Windows.Forms.Label Private labelAddress As System.Windows.Forms.Label Private labelCityStateProvincePostal As System.Windows.Forms.Label Private labelCountryRegion As System.Windows.Forms.Label Private labelEmail As System.Windows.Forms.Label Private components As System.ComponentModel.IContainer ' Define the constructor. Public Sub New() InitializeComponent() End Sub ' Initialize the control elements. Public Sub InitializeComponent() ' Initialize the controls. components = New System.ComponentModel.Container() errorProvider1 = New System.Windows.Forms.ErrorProvider() textName = New System.Windows.Forms.TextBox() textAddress = New System.Windows.Forms.TextBox() textCity = New System.Windows.Forms.TextBox() textStateProvince = New System.Windows.Forms.TextBox() textPostal = New System.Windows.Forms.TextBox() textCountryRegion = New System.Windows.Forms.TextBox() textEmail = New System.Windows.Forms.TextBox() labelName = New System.Windows.Forms.Label() labelAddress = New System.Windows.Forms.Label() labelCityStateProvincePostal = New System.Windows.Forms.Label() labelCountryRegion = New System.Windows.Forms.Label() labelEmail = New System.Windows.Forms.Label() ' Set the tab order, text alignment, size, and location of the controls. textName.Location = New System.Drawing.Point(120, 8) textName.Size = New System.Drawing.Size(232, 20) textName.TabIndex = 0 textAddress.Location = New System.Drawing.Point(120, 32) textAddress.Size = New System.Drawing.Size(232, 20) textAddress.TabIndex = 1 textCity.Location = New System.Drawing.Point(120, 56) textCity.Size = New System.Drawing.Size(96, 20) textCity.TabIndex = 2 textStateProvince.Location = New System.Drawing.Point(216, 56) textStateProvince.Size = New System.Drawing.Size(56, 20) textStateProvince.TabIndex = 3 textPostal.Location = New System.Drawing.Point(272, 56) textPostal.Size = New System.Drawing.Size(80, 20) textPostal.TabIndex = 4 textCountryRegion.Location = New System.Drawing.Point(120, 80) textCountryRegion.Size = New System.Drawing.Size(232, 20) textCountryRegion.TabIndex = 5 textEmail.Location = New System.Drawing.Point(120, 104) textEmail.Size = New System.Drawing.Size(232, 20) textEmail.TabIndex = 6 labelName.Location = New System.Drawing.Point(8, 8) labelName.Size = New System.Drawing.Size(112, 23) labelName.Text = "Name:" labelName.TextAlign = System.Drawing.ContentAlignment.MiddleRight labelAddress.Location = New System.Drawing.Point(8, 32) labelAddress.Size = New System.Drawing.Size(112, 23) labelAddress.Text = "Address:" labelAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight labelCityStateProvincePostal.Location = New System.Drawing.Point(8, 56) labelCityStateProvincePostal.Size = New System.Drawing.Size(112, 23) labelCityStateProvincePostal.Text = "City, St/Prov. Postal:" labelCityStateProvincePostal.TextAlign = System.Drawing.ContentAlignment.MiddleRight labelCountryRegion.Location = New System.Drawing.Point(8, 80) labelCountryRegion.Size = New System.Drawing.Size(112, 23) labelCountryRegion.Text = "Country/Region:" labelCountryRegion.TextAlign = System.Drawing.ContentAlignment.MiddleRight labelEmail.Location = New System.Drawing.Point(8, 104) labelEmail.Size = New System.Drawing.Size(112, 23) labelEmail.Text = "email:" labelEmail.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' Add the controls to the user control. Controls.AddRange(New System.Windows.Forms.Control() {labelName, _ labelAddress, labelCityStateProvincePostal, labelCountryRegion, _ labelEmail, textName, textAddress, textCity, textStateProvince, _ textPostal, textCountryRegion, textEmail}) ' Size the user control. Size = New System.Drawing.Size(375, 150) End Sub Private Sub MyValidatingCode() ' Confirm there is text in the control. If textEmail.Text.Length = 0 Then Throw New Exception("Email address is a required field") Else ' Confirm that there is a "." and an "@" in the e-mail address. If textEmail.Text.IndexOf(".") = - 1 Or textEmail.Text.IndexOf("@") = - 1 Then Throw New Exception("Email address must be valid e-mail address format." + _ Microsoft.VisualBasic.ControlChars.Cr + "For example 'someone@example.com'") End If End If End Sub ' Validate the data input by the user into textEmail. Private Sub textEmail_Validating(sender As Object, _ e As System.ComponentModel.CancelEventArgs) Handles textEmail.Validating Try MyValidatingCode() Catch ex As Exception ' Cancel the event and select the text to be corrected by the user. e.Cancel = True textEmail.Select(0, textEmail.Text.Length) ' Set the ErrorProvider error with the text to display. Me.errorProvider1.SetError(textEmail, ex.Message) End Try End Sub Private Sub textEmail_Validated(sender As Object, _ e As System.EventArgs) Handles textEmail.Validated ' If all conditions have been met, clear the error provider of errors. errorProvider1.SetError(textEmail, "") End Sub End Class End Namespace
using System; using System.Windows.Forms; using System.Drawing; using System.ComponentModel; namespace UserControls { public class MyCustomerInfoUserControl : System.Windows.Forms.UserControl { // Create the controls. private System.Windows.Forms.ErrorProvider errorProvider1; private System.Windows.Forms.TextBox textName; private System.Windows.Forms.TextBox textAddress; private System.Windows.Forms.TextBox textCity; private System.Windows.Forms.TextBox textStateProvince; private System.Windows.Forms.TextBox textPostal; private System.Windows.Forms.TextBox textCountryRegion; private System.Windows.Forms.TextBox textEmail; private System.Windows.Forms.Label labelName; private System.Windows.Forms.Label labelAddress; private System.Windows.Forms.Label labelCityStateProvincePostal; private System.Windows.Forms.Label labelCountryRegion; private System.Windows.Forms.Label labelEmail; private System.ComponentModel.IContainer components; // Define the constructor. public MyCustomerInfoUserControl() { InitializeComponent(); } // Initialize the control elements. public void InitializeComponent() { // Initialize the controls. components = new System.ComponentModel.Container(); errorProvider1 = new System.Windows.Forms.ErrorProvider(); textName = new System.Windows.Forms.TextBox(); textAddress = new System.Windows.Forms.TextBox(); textCity = new System.Windows.Forms.TextBox(); textStateProvince = new System.Windows.Forms.TextBox(); textPostal = new System.Windows.Forms.TextBox(); textCountryRegion = new System.Windows.Forms.TextBox(); textEmail = new System.Windows.Forms.TextBox(); labelName = new System.Windows.Forms.Label(); labelAddress = new System.Windows.Forms.Label(); labelCityStateProvincePostal = new System.Windows.Forms.Label(); labelCountryRegion = new System.Windows.Forms.Label(); labelEmail = new System.Windows.Forms.Label(); // Set the tab order, text alignment, size, and location of the controls. textName.Location = new System.Drawing.Point(120, 8); textName.Size = new System.Drawing.Size(232, 20); textName.TabIndex = 0; textAddress.Location = new System.Drawing.Point(120, 32); textAddress.Size = new System.Drawing.Size(232, 20); textAddress.TabIndex = 1; textCity.Location = new System.Drawing.Point(120, 56); textCity.Size = new System.Drawing.Size(96, 20); textCity.TabIndex = 2; textStateProvince.Location = new System.Drawing.Point(216, 56); textStateProvince.Size = new System.Drawing.Size(56, 20); textStateProvince.TabIndex = 3; textPostal.Location = new System.Drawing.Point(272, 56); textPostal.Size = new System.Drawing.Size(80, 20); textPostal.TabIndex = 4; textCountryRegion.Location = new System.Drawing.Point(120, 80); textCountryRegion.Size = new System.Drawing.Size(232, 20); textCountryRegion.TabIndex = 5; textEmail.Location = new System.Drawing.Point(120, 104); textEmail.Size = new System.Drawing.Size(232, 20); textEmail.TabIndex = 6; labelName.Location = new System.Drawing.Point(8, 8); labelName.Size = new System.Drawing.Size(112, 23); labelName.Text = "Name:"; labelName.TextAlign = System.Drawing.ContentAlignment.MiddleRight; labelAddress.Location = new System.Drawing.Point(8, 32); labelAddress.Size = new System.Drawing.Size(112, 23); labelAddress.Text = "Address:"; labelAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight; labelCityStateProvincePostal.Location = new System.Drawing.Point(8, 56); labelCityStateProvincePostal.Size = new System.Drawing.Size(112, 23); labelCityStateProvincePostal.Text = "City, St/Prov. Postal:"; labelCityStateProvincePostal.TextAlign = System.Drawing.ContentAlignment.MiddleRight; labelCountryRegion.Location = new System.Drawing.Point(8, 80); labelCountryRegion.Size = new System.Drawing.Size(112, 23); labelCountryRegion.Text = "Country/Region:"; labelCountryRegion.TextAlign = System.Drawing.ContentAlignment.MiddleRight; labelEmail.Location = new System.Drawing.Point(8, 104); labelEmail.Size = new System.Drawing.Size(112, 23); labelEmail.Text = "email:"; labelEmail.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // Add the Validating and Validated handlers for textEmail. textEmail.Validating += new System.ComponentModel.CancelEventHandler(textEmail_Validating); textEmail.Validated += new System.EventHandler(textEmail_Validated); // Add the controls to the user control. Controls.AddRange(new System.Windows.Forms.Control[] { labelName, labelAddress, labelCityStateProvincePostal, labelCountryRegion, labelEmail, textName, textAddress, textCity, textStateProvince, textPostal, textCountryRegion, textEmail }); // Size the user control. Size = new System.Drawing.Size(375, 150); } private void MyValidatingCode() { // Confirm there is text in the control. if (textEmail.Text.Length == 0) { throw new Exception("Email address is a required field."); } // Confirm that there is a "." and an "@" in the e-mail address. else if(textEmail.Text.IndexOf(".") == -1 || textEmail.Text.IndexOf("@") == -1) { throw new Exception("Email address must be valid e-mail address format." + "\nFor example: 'someone@example.com'"); } } // Validate the data input by the user into textEmail. private void textEmail_Validating(object sender, System.ComponentModel.CancelEventArgs e) { try { MyValidatingCode(); } catch(Exception ex) { // Cancel the event and select the text to be corrected by the user. e.Cancel = true; textEmail.Select(0, textEmail.Text.Length); // Set the ErrorProvider error with the text to display. this.errorProvider1.SetError(textEmail,ex.Message); } } private void textEmail_Validated(Object sender, System.EventArgs e) { //If all conditions have been met, clear the error provider of errors. errorProvider1.SetError(textEmail, ""); } } // End Class } // End Namespace
#using <System.dll> #using <System.Drawing.dll> #using <System.Windows.Forms.dll> using namespace System; using namespace System::Windows::Forms; using namespace System::Drawing; using namespace System::ComponentModel; namespace UserControls { public ref class MyCustomerInfoUserControl: public System::Windows::Forms::UserControl { private: // Create the controls. System::Windows::Forms::ErrorProvider^ errorProvider1; System::Windows::Forms::TextBox^ textName; System::Windows::Forms::TextBox^ textAddress; System::Windows::Forms::TextBox^ textCity; System::Windows::Forms::TextBox^ textStateProvince; System::Windows::Forms::TextBox^ textPostal; System::Windows::Forms::TextBox^ textCountryRegion; System::Windows::Forms::TextBox^ textEmail; System::Windows::Forms::Label ^ labelName; System::Windows::Forms::Label ^ labelAddress; System::Windows::Forms::Label ^ labelCityStateProvincePostal; System::Windows::Forms::Label ^ labelCountryRegion; System::Windows::Forms::Label ^ labelEmail; System::ComponentModel::IContainer^ components; public: // Define the constructor. MyCustomerInfoUserControl() { InitializeComponent(); } // Initialize the control elements. void InitializeComponent() { // Initialize the controls. components = gcnew System::ComponentModel::Container; errorProvider1 = gcnew System::Windows::Forms::ErrorProvider; textName = gcnew System::Windows::Forms::TextBox; textAddress = gcnew System::Windows::Forms::TextBox; textCity = gcnew System::Windows::Forms::TextBox; textStateProvince = gcnew System::Windows::Forms::TextBox; textPostal = gcnew System::Windows::Forms::TextBox; textCountryRegion = gcnew System::Windows::Forms::TextBox; textEmail = gcnew System::Windows::Forms::TextBox; labelName = gcnew System::Windows::Forms::Label; labelAddress = gcnew System::Windows::Forms::Label; labelCityStateProvincePostal = gcnew System::Windows::Forms::Label; labelCountryRegion = gcnew System::Windows::Forms::Label; labelEmail = gcnew System::Windows::Forms::Label; // Set the tab order, text alignment, size, and location of the controls. textName->Location = System::Drawing::Point( 120, 8 ); textName->Size = System::Drawing::Size( 232, 20 ); textName->TabIndex = 0; textAddress->Location = System::Drawing::Point( 120, 32 ); textAddress->Size = System::Drawing::Size( 232, 20 ); textAddress->TabIndex = 1; textCity->Location = System::Drawing::Point( 120, 56 ); textCity->Size = System::Drawing::Size( 96, 20 ); textCity->TabIndex = 2; textStateProvince->Location = System::Drawing::Point( 216, 56 ); textStateProvince->Size = System::Drawing::Size( 56, 20 ); textStateProvince->TabIndex = 3; textPostal->Location = System::Drawing::Point( 272, 56 ); textPostal->Size = System::Drawing::Size( 80, 20 ); textPostal->TabIndex = 4; textCountryRegion->Location = System::Drawing::Point( 120, 80 ); textCountryRegion->Size = System::Drawing::Size( 232, 20 ); textCountryRegion->TabIndex = 5; textEmail->Location = System::Drawing::Point( 120, 104 ); textEmail->Size = System::Drawing::Size( 232, 20 ); textEmail->TabIndex = 6; labelName->Location = System::Drawing::Point( 8, 8 ); labelName->Size = System::Drawing::Size( 112, 23 ); labelName->Text = "Name:"; labelName->TextAlign = System::Drawing::ContentAlignment::MiddleRight; labelAddress->Location = System::Drawing::Point( 8, 32 ); labelAddress->Size = System::Drawing::Size( 112, 23 ); labelAddress->Text = "Address:"; labelAddress->TextAlign = System::Drawing::ContentAlignment::MiddleRight; labelCityStateProvincePostal->Location = System::Drawing::Point( 8, 56 ); labelCityStateProvincePostal->Size = System::Drawing::Size( 112, 23 ); labelCityStateProvincePostal->Text = "City, St/Prov. Postal:"; labelCityStateProvincePostal->TextAlign = System::Drawing::ContentAlignment::MiddleRight; labelCountryRegion->Location = System::Drawing::Point( 8, 80 ); labelCountryRegion->Size = System::Drawing::Size( 112, 23 ); labelCountryRegion->Text = "Country/Region:"; labelCountryRegion->TextAlign = System::Drawing::ContentAlignment::MiddleRight; labelEmail->Location = System::Drawing::Point( 8, 104 ); labelEmail->Size = System::Drawing::Size( 112, 23 ); labelEmail->Text = "email:"; labelEmail->TextAlign = System::Drawing::ContentAlignment::MiddleRight; // Add the Validating and Validated handlers for textEmail. textEmail->Validating += gcnew System::ComponentModel::CancelEventHandler( this, &MyCustomerInfoUserControl::textEmail_Validating ); textEmail->Validated += gcnew System::EventHandler( this, &MyCustomerInfoUserControl::textEmail_Validated ); // Add the controls to the user control. array<System::Windows::Forms::Control^>^temp0 = {labelName,labelAddress ,labelCityStateProvincePostal,labelCountryRegion,labelEmail,textName,textAddress ,textCity,textStateProvince,textPostal,textCountryRegion,textEmail}; Controls->AddRange( temp0 ); // Size the user control. Size = System::Drawing::Size( 375, 150 ); } private: void MyValidatingCode() { // Confirm there is text in the control. if ( textEmail->Text->Length == 0 ) { throw gcnew Exception( "Email address is a required field." ); } // Confirm that there is a "." and an "@" in the e-mail address. else // Confirm that there is a "." and an "@" in the e-mail address. if ( textEmail->Text->IndexOf( "." ) == -1 || textEmail->Text->IndexOf( "@" ) == -1 ) { throw gcnew Exception( "Email address must be valid e-mail address format.\nFor example: 'someone@example.com'" ); } } // Validate the data input by the user into textEmail. void textEmail_Validating( Object^ /*sender*/, System::ComponentModel::CancelEventArgs^ e ) { try { MyValidatingCode(); } catch ( Exception^ ex ) { // Cancel the event and select the text to be corrected by the user. e->Cancel = true; textEmail->Select(0,textEmail->Text->Length); // Set the ErrorProvider error with the text to display. this->errorProvider1->SetError( textEmail, ex->Message ); } } void textEmail_Validated( Object^ /*sender*/, System::EventArgs^ /*e*/ ) { //If all conditions have been met, clear the error provider of errors. errorProvider1->SetError( textEmail, "" ); } }; } // End Class // End Namespace
package UserControls; import System.*; import System.Windows.Forms.*; import System.Drawing.*; import System.ComponentModel.*; public class MyCustomerInfoUserControl extends System.Windows.Forms.UserControl { // Create the controls. private System.Windows.Forms.ErrorProvider errorProvider1; private System.Windows.Forms.TextBox textName; private System.Windows.Forms.TextBox textAddress; private System.Windows.Forms.TextBox textCity; private System.Windows.Forms.TextBox textStateProvince; private System.Windows.Forms.TextBox textPostal; private System.Windows.Forms.TextBox textCountryRegion; private System.Windows.Forms.TextBox textEmail; private System.Windows.Forms.Label labelName; private System.Windows.Forms.Label labelAddress; private System.Windows.Forms.Label labelCityStateProvincePostal; private System.Windows.Forms.Label labelCountryRegion; private System.Windows.Forms.Label labelEmail; private System.ComponentModel.IContainer components; // Define the constructor. public MyCustomerInfoUserControl() { InitializeComponent(); } //MyCustomerInfoUserControl // Initialize the control elements. public void InitializeComponent() { // Initialize the controls. components = new System.ComponentModel.Container(); errorProvider1 = new System.Windows.Forms.ErrorProvider(); textName = new System.Windows.Forms.TextBox(); textAddress = new System.Windows.Forms.TextBox(); textCity = new System.Windows.Forms.TextBox(); textStateProvince = new System.Windows.Forms.TextBox(); textPostal = new System.Windows.Forms.TextBox(); textCountryRegion = new System.Windows.Forms.TextBox(); textEmail = new System.Windows.Forms.TextBox(); labelName = new System.Windows.Forms.Label(); labelAddress = new System.Windows.Forms.Label(); labelCityStateProvincePostal = new System.Windows.Forms.Label(); labelCountryRegion = new System.Windows.Forms.Label(); labelEmail = new System.Windows.Forms.Label(); // Set the tab order, text alignment, // size, and location of the controls. textName.set_Location(new System.Drawing.Point(120, 8)); textName.set_Size(new System.Drawing.Size(232, 20)); textName.set_TabIndex(0); textAddress.set_Location(new System.Drawing.Point(120, 32)); textAddress.set_Size(new System.Drawing.Size(232, 20)); textAddress.set_TabIndex(1); textCity.set_Location(new System.Drawing.Point(120, 56)); textCity.set_Size(new System.Drawing.Size(96, 20)); textCity.set_TabIndex(2); textStateProvince.set_Location(new System.Drawing.Point(216, 56)); textStateProvince.set_Size(new System.Drawing.Size(56, 20)); textStateProvince.set_TabIndex(3); textPostal.set_Location(new System.Drawing.Point(272, 56)); textPostal.set_Size(new System.Drawing.Size(80, 20)); textPostal.set_TabIndex(4); textCountryRegion.set_Location(new System.Drawing.Point(120, 80)); textCountryRegion.set_Size(new System.Drawing.Size(232, 20)); textCountryRegion.set_TabIndex(5); textEmail.set_Location(new System.Drawing.Point(120, 104)); textEmail.set_Size(new System.Drawing.Size(232, 20)); textEmail.set_TabIndex(6); labelName.set_Location(new System.Drawing.Point(8, 8)); labelName.set_Size(new System.Drawing.Size(112, 23)); labelName.set_Text("Name:"); labelName.set_TextAlign(System.Drawing.ContentAlignment.MiddleRight); labelAddress.set_Location(new System.Drawing.Point(8, 32)); labelAddress.set_Size(new System.Drawing.Size(112, 23)); labelAddress.set_Text("Address:"); labelAddress.set_TextAlign(System.Drawing.ContentAlignment.MiddleRight); labelCityStateProvincePostal.set_Location( new System.Drawing.Point(8, 56)); labelCityStateProvincePostal.set_Size(new System.Drawing.Size(112, 23)); labelCityStateProvincePostal.set_Text("City, St/Prov. Postal:"); labelCityStateProvincePostal.set_TextAlign( System.Drawing.ContentAlignment.MiddleRight); labelCountryRegion.set_Location(new System.Drawing.Point(8, 80)); labelCountryRegion.set_Size(new System.Drawing.Size(112, 23)); labelCountryRegion.set_Text("Country/Region:"); labelCountryRegion.set_TextAlign( System.Drawing.ContentAlignment.MiddleRight); labelEmail.set_Location(new System.Drawing.Point(8, 104)); labelEmail.set_Size(new System.Drawing.Size(112, 23)); labelEmail.set_Text("email:"); labelEmail.set_TextAlign(System.Drawing.ContentAlignment.MiddleRight); // Add the Validating and Validated handlers for textEmail. textEmail.add_Validating(new System.ComponentModel.CancelEventHandler( textEmail_Validating)); textEmail.add_Validated(new System.EventHandler(textEmail_Validated)); // Add the controls to the user control. get_Controls().AddRange(new System.Windows.Forms.Control[] { labelName,labelAddress, labelCityStateProvincePostal, labelCountryRegion,labelEmail, textName, textAddress, textCity, textStateProvince, textPostal, textCountryRegion, textEmail }); // Size the user control. set_Size(new System.Drawing.Size(375, 150)); } //InitializeComponent private void MyValidatingCode() throws Exception { // Confirm there is text in the control. if (textEmail.get_Text().length() == 0) { throw new Exception("Email address is a required field."); } // Confirm that there is a "." and an "@" in the e-mail address. else { if (textEmail.get_Text().IndexOf(".") == -1 || textEmail.get_Text().IndexOf("@") == -1) { throw new Exception("Email address must be valid e-mail" + "address format." + "\nFor example: 'someone@example.com'"); } } } //MyValidatingCode // Validate the data input by the user into textEmail. private void textEmail_Validating(Object sender, System.ComponentModel.CancelEventArgs e) { try { MyValidatingCode(); } catch (Exception ex) { // Cancel the event and select the text to be corrected by the user. e.set_Cancel(true); textEmail.Select(0, textEmail.get_Text().length()); // Set the ErrorProvider error with the text to display. this.errorProvider1.SetError(textEmail, ex.get_Message()); } } //textEmail_Validating private void textEmail_Validated(Object sender, System.EventArgs e) { //If all conditions have been met, clear the error provider of errors. errorProvider1.SetError(textEmail, ""); } //textEmail_Validated } //End Class MyCustomerInfoUserControl
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.UserControl
System.Web.UI.Design.WebControls.ParameterEditorUserControl
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- UserControl クラスのページへのリンク