このチュートリアルでは、任意のコントロールをグリッドセルからドロップダウンする方法を学びます。この例では、ユーザーがデータを簡単に入力できるように、定義済みの入力値を含む ListBox コントロールを使用します。たとえば、現在のセルをクリックして編集を始めると、このリストがドロップダウンされます。また、セル内にボタンを配置し、このボタンをクリックすることで ListBox コントロールを表示する方法を学びます。このチュートリアルで説明するテクニックと同様の方法で、グリッドセルから任意のコントロールをドロップダウンできます。
以下の手順を実行します。

グリッドの2列目(Column1)の CustType フィールドには、顧客タイプを表す次の1〜5の数値が表示されます。
ここでドロップダウンする ListBox1 には、テキストで表された顧客タイプの説明を表示し、ユーザーがアイテムの1つをダブルクリックして、対応する値をグリッドに入力できるようにします。
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Imports System.Data Imports System.Data.Oledb Imports System.IO Imports System.Collections |
|
C#コードの書き方
| C# |
コードのコピー
|
|---|---|
using System.Data; using System.Data.Oledb; using System.IO; using System.Collections; |
|
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ContactsTableAdapter.Fill(Me.DsContacts.Contacts)
' リストボックスに顧客タイプの項目を追加します。
With Me.ListBox1
.Items.Add("Prospective")
.Items.Add("Normal")
.Items.Add("Buyer")
.Items.Add("Distributor")
.Items.Add("Other")
.Visible = False
End With
' 「顧客タイプ」にドロップダウンボタンを設定します。
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("CustType").Button = True
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
private void Form1_Load(System.object sender, System.EventArgs e)
{
this.ContactsTableAdapter.Fill(this.DsContacts.Contacts);
//リストボックスに顧客タイプの項目を追加します。
this.listBox1.Items.Add("Prospective");
this.listBox1.Items.Add("Normal");
this.listBox1.Items.Add("Buyer");
this.listBox1.Items.Add("Distributor");
this.listBox1.Items.Add("Other");
this.listBox1.Visible = false;
//「顧客タイプ」にドロップダウンボタンを設定します。
this.c1TrueDBGrid1.Splits[0].DisplayColumns["CustType"].Button = true;
}
|
|
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub C1TrueDBGrid1_ButtonClick(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles C1TrueDBGrid1.ButtonClick
' ドロップダウンとなるリストボックスをカレントセルの左端に配置します。
With ListBox1
.Left = Me.C1TrueDBGrid1.Left + Me.C1TrueDBGrid1.RecordSelectorWidth + Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width + Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).Width
.Top = Me.C1TrueDBGrid1.Top + Me.C1TrueDBGrid1.RowTop(Me.C1TrueDBGrid1.Row)
.Visible = True
.Select()
End With
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
private void c1TrueDBGrid1_ButtonClick(object sender, C1.Win.C1TrueDBGrid.ColEventArgs e)
{
// ドロップダウンとなるリストボックスをカレントセルの左端に配置します。
this.listBox1.Left = this.c1TrueDBGrid1.Left + this.c1TrueDBGrid1.RecordSelectorWidth + this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Width + this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].Width;
this.listBox1.Top = this.c1TrueDBGrid1.Top + this.c1TrueDBGrid1.RowTop(this.c1TrueDBGrid1.Row);
this.listBox1.Visible = true;
this.listBox1.Select();
}
|
|
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
Me.C1TrueDBGrid1.Columns("CustType").Text = Me.ListBox1.SelectedIndex + 1
Me.ListBox1.Visible = False
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
private void listBox1_DoubleClick(object sender, System.EventArgs e)
{
this.c1TrueDBGrid1.Columns["CustType"].Text = (this.listBox1.SelectedIndex + 1).ToString();
this.listBox1.Visible = false;
}
|
|
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub ListBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Leave
Me.ListBox1.Visible = False
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
private void listBox1_Leave(object sender, System.EventArgs e)
{
this.listBox1.Visible = false;
}
|
|
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub C1TrueDBGrid1_Scroll(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.CancelEventArgs) Handles C1TrueDBGrid1.Scroll
Me.ListBox1.Visible = False
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
private void c1TrueDBGrid1_Scroll(object sender, C1.Win.C1TrueDBGrid.CancelEventArgs e)
{
this.listBox1.Visible = false;
}
|
|

これでチュートリアル 9 は終了です。