作成日: 2015/04/20 最終更新日: 2015/09/16
文書種別
不具合
状況
修正済み
詳細
ValueItemsを使ったコンボボックスのドロップダウンを開き、項目を選択してドロップダウンを閉じ、再度コンボボックスを開きます。
すると、ドロップダウンリストの縦スクロールバー(のつまみ)が、選択した項目に関わらずリストの最上部に表示されます。
そのため、選択項目から上が無いものとユーザーが誤認識する恐れがあります。
すると、ドロップダウンリストの縦スクロールバー(のつまみ)が、選択した項目に関わらずリストの最上部に表示されます。
そのため、選択項目から上が無いものとユーザーが誤認識する恐れがあります。
回避方法
この問題はバージョン2.0.20152.74または4.0.20152.74で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです
C1DataColumnのValueItemsの代わりに、C1TrueDBDropdownを使ったコンボボックス型セルを実装します。
◎サンプルコード(VB)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです
C1DataColumnのValueItemsの代わりに、C1TrueDBDropdownを使ったコンボボックス型セルを実装します。
◎サンプルコード(VB)
Imports C1.Win.C1TrueDBGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' レイアウトの作成
C1TrueDBGrid1.Columns.Add(New C1DataColumn("A", "", GetType(Int32)))
C1TrueDBGrid1.Columns.Add(New C1DataColumn("B", "", GetType(String)))
C1TrueDBGrid1.Splits(0).DisplayColumns(0).Visible = True
C1TrueDBGrid1.Splits(0).DisplayColumns(1).Visible = True
'' ValueItemsを使ったコンボボックスの設定
'Call Test1()
' C1TrueDBDropdownを使ったコンボボックスの設定
Call Test2()
' データの設定
C1TrueDBGrid1.SetDataBinding()
C1TrueDBGrid1.AddRows(5)
End Sub
Private Sub Test1()
' ValueItemsを使ったコンボボックスの設定
C1TrueDBGrid1.Columns(0).ValueItems.Presentation = PresentationEnum.ComboBox
C1TrueDBGrid1.Columns(0).ValueItems.MaxComboItems = 5
For i As Integer = 0 To 19
Dim item As New ValueItem(CStr(i), CStr(i))
C1TrueDBGrid1.Columns(0).ValueItems.Values.Add(item)
Next
End Sub
Private Sub Test2()
' C1TrueDBDropdown用リストの作成
Dim dl As New DataTable("LIST")
dl.Columns.Add("Item", GetType(Int32))
For i As Integer = 0 To 19
dl.Rows.Add(i)
Next
dl.AcceptChanges()
' C1TrueDBDropdownの設定
C1TrueDBDropdown1.DataSource = dl
C1TrueDBDropdown1.DisplayMember = "Item"
C1TrueDBDropdown1.ValueMember = "Item"
C1TrueDBDropdown1.Height = 105
C1TrueDBDropdown1.Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width
C1TrueDBDropdown1.DisplayColumns(0).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center
C1TrueDBDropdown1.DisplayColumns(0).Style.HorizontalAlignment = AlignHorzEnum.Center
C1TrueDBDropdown1.DisplayColumns(0).Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width -
SystemInformation.VerticalScrollBarWidth
C1TrueDBGrid1.Columns(0).DropDown = C1TrueDBDropdown1
End Sub
End Class
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' レイアウトの作成
C1TrueDBGrid1.Columns.Add(New C1DataColumn("A", "", GetType(Int32)))
C1TrueDBGrid1.Columns.Add(New C1DataColumn("B", "", GetType(String)))
C1TrueDBGrid1.Splits(0).DisplayColumns(0).Visible = True
C1TrueDBGrid1.Splits(0).DisplayColumns(1).Visible = True
'' ValueItemsを使ったコンボボックスの設定
'Call Test1()
' C1TrueDBDropdownを使ったコンボボックスの設定
Call Test2()
' データの設定
C1TrueDBGrid1.SetDataBinding()
C1TrueDBGrid1.AddRows(5)
End Sub
Private Sub Test1()
' ValueItemsを使ったコンボボックスの設定
C1TrueDBGrid1.Columns(0).ValueItems.Presentation = PresentationEnum.ComboBox
C1TrueDBGrid1.Columns(0).ValueItems.MaxComboItems = 5
For i As Integer = 0 To 19
Dim item As New ValueItem(CStr(i), CStr(i))
C1TrueDBGrid1.Columns(0).ValueItems.Values.Add(item)
Next
End Sub
Private Sub Test2()
' C1TrueDBDropdown用リストの作成
Dim dl As New DataTable("LIST")
dl.Columns.Add("Item", GetType(Int32))
For i As Integer = 0 To 19
dl.Rows.Add(i)
Next
dl.AcceptChanges()
' C1TrueDBDropdownの設定
C1TrueDBDropdown1.DataSource = dl
C1TrueDBDropdown1.DisplayMember = "Item"
C1TrueDBDropdown1.ValueMember = "Item"
C1TrueDBDropdown1.Height = 105
C1TrueDBDropdown1.Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width
C1TrueDBDropdown1.DisplayColumns(0).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center
C1TrueDBDropdown1.DisplayColumns(0).Style.HorizontalAlignment = AlignHorzEnum.Center
C1TrueDBDropdown1.DisplayColumns(0).Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width -
SystemInformation.VerticalScrollBarWidth
C1TrueDBGrid1.Columns(0).DropDown = C1TrueDBDropdown1
End Sub
End Class
◎サンプルコード(C#)
public class Form1
{
private void Form1_Load(object sender, EventArgs e)
{
// レイアウトの作成
C1TrueDBGrid1.Columns.Add(new C1DataColumn("A", "", typeof(Int32)));
C1TrueDBGrid1.Columns.Add(new C1DataColumn("B", "", typeof(string)));
C1TrueDBGrid1.Splits(0).DisplayColumns(0).Visible = true;
C1TrueDBGrid1.Splits(0).DisplayColumns(1).Visible = true;
//' ValueItemsを使ったコンボボックスの設定
//Call Test1()
// C1TrueDBDropdownを使ったコンボボックスの設定
Test2();
// データの設定
C1TrueDBGrid1.SetDataBinding();
C1TrueDBGrid1.AddRows(5);
}
private void Test1()
{
// ValueItemsを使ったコンボボックスの設定
C1TrueDBGrid1.Columns(0).ValueItems.Presentation = PresentationEnum.ComboBox;
C1TrueDBGrid1.Columns(0).ValueItems.MaxComboItems = 5;
for (int i = 0; i <= 19; i++) {
ValueItem item = new ValueItem(Convert.ToString(i), Convert.ToString(i));
C1TrueDBGrid1.Columns(0).ValueItems.Values.Add(item);
}
}
private void Test2()
{
// C1TrueDBDropdown用リストの作成
DataTable dl = new DataTable("LIST");
dl.Columns.Add("Item", typeof(Int32));
for (int i = 0; i <= 19; i++) {
dl.Rows.Add(i);
}
dl.AcceptChanges();
// C1TrueDBDropdownの設定
C1TrueDBDropdown1.DataSource = dl;
C1TrueDBDropdown1.DisplayMember = "Item";
C1TrueDBDropdown1.ValueMember = "Item";
C1TrueDBDropdown1.Height = 105;
C1TrueDBDropdown1.Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width;
C1TrueDBDropdown1.DisplayColumns(0).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center;
C1TrueDBDropdown1.DisplayColumns(0).Style.HorizontalAlignment = AlignHorzEnum.Center;
C1TrueDBDropdown1.DisplayColumns(0).Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width - SystemInformation.VerticalScrollBarWidth;
C1TrueDBGrid1.Columns(0).DropDown = C1TrueDBDropdown1;
}
public Form1()
{
Load += Form1_Load;
}
}
{
private void Form1_Load(object sender, EventArgs e)
{
// レイアウトの作成
C1TrueDBGrid1.Columns.Add(new C1DataColumn("A", "", typeof(Int32)));
C1TrueDBGrid1.Columns.Add(new C1DataColumn("B", "", typeof(string)));
C1TrueDBGrid1.Splits(0).DisplayColumns(0).Visible = true;
C1TrueDBGrid1.Splits(0).DisplayColumns(1).Visible = true;
//' ValueItemsを使ったコンボボックスの設定
//Call Test1()
// C1TrueDBDropdownを使ったコンボボックスの設定
Test2();
// データの設定
C1TrueDBGrid1.SetDataBinding();
C1TrueDBGrid1.AddRows(5);
}
private void Test1()
{
// ValueItemsを使ったコンボボックスの設定
C1TrueDBGrid1.Columns(0).ValueItems.Presentation = PresentationEnum.ComboBox;
C1TrueDBGrid1.Columns(0).ValueItems.MaxComboItems = 5;
for (int i = 0; i <= 19; i++) {
ValueItem item = new ValueItem(Convert.ToString(i), Convert.ToString(i));
C1TrueDBGrid1.Columns(0).ValueItems.Values.Add(item);
}
}
private void Test2()
{
// C1TrueDBDropdown用リストの作成
DataTable dl = new DataTable("LIST");
dl.Columns.Add("Item", typeof(Int32));
for (int i = 0; i <= 19; i++) {
dl.Rows.Add(i);
}
dl.AcceptChanges();
// C1TrueDBDropdownの設定
C1TrueDBDropdown1.DataSource = dl;
C1TrueDBDropdown1.DisplayMember = "Item";
C1TrueDBDropdown1.ValueMember = "Item";
C1TrueDBDropdown1.Height = 105;
C1TrueDBDropdown1.Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width;
C1TrueDBDropdown1.DisplayColumns(0).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center;
C1TrueDBDropdown1.DisplayColumns(0).Style.HorizontalAlignment = AlignHorzEnum.Center;
C1TrueDBDropdown1.DisplayColumns(0).Width = C1TrueDBGrid1.Splits(0).DisplayColumns(0).Width - SystemInformation.VerticalScrollBarWidth;
C1TrueDBGrid1.Columns(0).DropDown = C1TrueDBDropdown1;
}
public Form1()
{
Load += Form1_Load;
}
}
旧文書番号
81258