C1DropDownControlコンポーネントの概要
C1DropDownControlコントロールは、強力なカスタムドロップダウン機能を備えています。この機能を使用して、標準のドロップダウンカレンダーやドロップダウン電卓以外に、独自に作成したドロップダウンフォームを表示させることができます。
ドロップダウンフォームは、プロジェクト内のフォームとしてビジュアルに作成できます。
カスタムドロップダウンコントロールの作成手順
カスタムドロップダウンコントロールを作成するには、C1DropDownControlコントロールを使用します。このコントロールクラスは「C1TextBox」から派生され、カスタムドロップダウン機能およびアップ/ダウンボタンを持っています。
カスタムドロップダウンコントロールは、次の手順で作成します。
(1)クラス「C1.Win.C1Input.DropDownForm」から派生されたフォームをプロジェクトに追加します。このフォームにドロップダウン時の処理を実行するコントロールを配置します。
(2)DropDownFormから派生されたフォームで、必要に応じてC1DropDownControlコントロールのValueプロパティを設定する処理を、PostChangesイベントハンドラに作成します。
C1DropDownControlコントロールは、入力された値をValueプロパティに格納します。ドロップダウンフォームで入力された値をC1DropDownControlコントロールに渡すには、ドロップダウンフォームのPostChangesイベントを利用します。
(3)アプリケーションのベースとなるWindowsフォームにC1DropDownControlコントロールを配置し、「DropDownFormClassName」プロパティにドロップダウンウィンドウとなるフォームのクラス名を選択します。
カスタムドロップダウンコントロールの作成(1)
では、さっそくカスタムドロップダウンコントロールを作成してみましょう。今回は、出身地と年齢をラジオボタンで選択できるドロップダウンフォームを表示するようにします。
出身地をラジオボタンで選択できるドロップダウンコントロールの作成
最初に、出身地をラジオボタンで選択できるドロップダウンコントロールを作成します。
(1)Windowsフォームアプリケーション用プロジェクトを用意します。
(2)フォームにC1DropDownControlコントロールを配置します。
(3)プロジェクトにもう一つWindowsフォームを追加し、フォームの名前を「DropDown」にします。
(4)VBでは、ソリューションエクスプローラで今追加したフォームのDropDown.Designer.vbを開きます。そして、「Inherits」のコードを書き換えます。
Partial Class DropDown Inherits System.Windows.Forms.Form
Partial Class DropDown Inherits C1.Win.C1Input.DropDownForm
(5)C#では、「DropDown.cs」を開き、クラス定義のコードを書き換えます。
namespace CustDropDown_Winform_cs { public partial class DropDown : Form
namespace CustDropDown_Winform_cs { public partial class DropDown : C1.Win.C1Input.DropDownForm
(6)これで、追加したフォーム「DropDown」は、継承元がWindowsFormではなく、C1.Win.C1Input.DropDownFormから継承したドロップダウンフォームになります。
フォームデザイナに戻ると、フォームが枠線のない形状になっています。
(7)このフォームにRadioButtonコントロールとButtonコントロールを配置します。
RadioButtonコントロールには都道府県名を、ButtonコントロールはOKとキャンセルを設定します。また、ButtonコントロールのDialogResultプロパティを、OKボタンは「OK」に、キャンセルボタンは「Cancel」に設定します。
(8)DropDownフォームを選択し、次のプロパティを設定します。
プロパティ | 設定値 |
---|---|
AcceptButton | Button1 |
CancelButton | Button2 |
(9)Optionsプロパティをクリックして展開し、AutoResizeプロパティをTrueにします。これで、ドロップダウンフォームの幅がC1DropDownControlコントロールの幅に合わせられます。
(10)DropDownフォームのPostChangesイベントハンドラを作成し、次のコードを入力します。
このコードは、フォーム上のRadioButtonコントロールを順番に走査し、CheckedプロパティがTrueになっているRadioButtonコントロールの文字列を、C1DropDownControlコントロールのValueプロパティに設定します。
Private Sub DropDown_PostChanges(sender As System.Object, e As System.EventArgs) Handles MyBase.PostChanges If (MyBase.DialogResult = DialogResult.OK) Then Dim control1 As Control For Each control1 In MyBase.Controls If (TypeOf control1 Is RadioButton AndAlso CType(control1, RadioButton).Checked) Then MyBase.OwnerControl.Value = CType(control1, RadioButton).Text End If Next End If End Sub
private void DropDown_PostChanges(object sender, EventArgs e) { if (DialogResult == DialogResult.OK) { foreach (Control control1 in Controls) { if (control1 as RadioButton != null && ((RadioButton)control1).Checked) { OwnerControl.Value = ((RadioButton)control1).Text; } } } }
(11)フォーム「Form1」のデザイナに移動し、C1DropDownControlコントロールのDropDownFormClassNameプロパティに、ドロップダウンフォームのクラス名を設定します。
これで、C1DropDownControlコントロールとドロップダウンフォームが連結されます。
ここで、アプリケーションを一度実行し、ドロップダウンフォームが表示されることを確認します。また、ラジオボタンをクリックし、OKボタンをクリックするとその値がC1DropDownControlコントロールに表示されることを確認します。
(12)次に、C1DropDownControlコントロールのアップダウンボタンは使用しないので、これを非表示にします。
フォームデザイナでForm1のC1DropDownControlコントロールを選択し、プロパティウィンドウのVisibleButtonsプロパティを展開します。そして、「UpDown」プロパティをFalseにします。
以上で、最初のカスタムドロップダウンコントロールが出来上がりです。