作成日: 2022/10/17 最終更新日: 2022/10/17
文書種別
不具合
発生環境
.Net Framework 4.5.2
.NET 6
状況
回避方法あり
詳細
C1TextBoxのSelectionStart/SelectionLengthプロパティが有効にならないことがあります。
例えば、C1TextBoxに対して、Form_Loadイベントで以下のような設定をしても、指定したテキスト範囲が選択されません。
※Form_Loadイベントの他、C1TextBoxのValidatingイベントやEnterイベントで設定しても、有効になりません。なお、C1TextBoxのClickイベント、ButtonのClickイベントでの設定は有効になります。
例えば、C1TextBoxに対して、Form_Loadイベントで以下のような設定をしても、指定したテキスト範囲が選択されません。
c1TextBox1.SelectionStart = 3;
c1TextBox1.SelectionLength = 5;
※Form_Loadイベントの他、C1TextBoxのValidatingイベントやEnterイベントで設定しても、有効になりません。なお、C1TextBoxのClickイベント、ButtonのClickイベントでの設定は有効になります。
回避方法
C1TextBox には InitialSelection プロパティがあり、このプロパティの作用によって現象が発生します。
.Net Framework 4.5.2版では以下のようにUpdateSelectionメソッドで何もしないように変更することで回避できます。
※.NET 6版ではUpdateSelectionメソッドがないため回避方法はありません。
◎サンプルコード(VB)
.Net Framework 4.5.2版では以下のようにUpdateSelectionメソッドで何もしないように変更することで回避できます。
※.NET 6版ではUpdateSelectionメソッドがないため回避方法はありません。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim a As MyTextBox = New MyTextBox
a.Location = New System.Drawing.Point(42, 128)
a.Name = "MyTextBox1"
a.Size = New System.Drawing.Size(163, 117)
Me.Controls.Add(a)
a.Text = "123456789"
a.Focus
a.SelectionStart = 3
a.SelectionLength = 5
End Sub
Friend Class MyTextBox
Inherits C1TextBox
Protected Overrides Sub UpdateSelection()
End Sub
End Class
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
MyTextBox a = new MyTextBox();
a.Location = new System.Drawing.Point(42, 128);
a.Name = "MyTextBox1";
a.Size = new System.Drawing.Size(163, 117);
this.Controls.Add(a);
a.Text = "123456789";
a.Focus();
a.SelectionStart = 3;
a.SelectionLength = 5;
}
internal class MyTextBox : C1TextBox
{
protected override void UpdateSelection()
{
}
}