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にします。
以上で、最初のカスタムドロップダウンコントロールが出来上がりです。


