20

キーと値のペアのリストとデータバインドするクリプトンコンボボックスがあります。何が起こっているのかというと、選択した項目をコードで設定すると、テキストが強調表示されます。これを防ぐ、またはテキストの選択を解除するにはどうすればよいですか?

私は次のことを試しました:

// 1
combo.Select(0,0);
// 2
combo.Focus();
anotherControl.Focus();
// 3
combo.SelectionStart = 0;
combo.SelectionLength = combo.Text.Length;
// 4 
combo.SelectionStart = combo.Text.Length;
combo.SelectionLength = 0;

何も機能していないようです。どんな助けでも大歓迎です。

4

15 に答える 15

3

うまくいく解決策を見つけたかもしれません:

フォームを使用している場合は、フォームの Shown イベントをサブスクライブします。

また

(私のように) UserControl を使用している場合は、VisibleChanged イベントをサブスクライブできます。

イベントでは、次のことができます。

        foreach (ComboBox cbo in (this.Controls.Cast<Control>().Where(c => c is ComboBox).Select(c => (ComboBox) c)))
        {
            cbo.SelectionLength = 0;
        }

余談として:

ComboBoxes をコントロールに追加し、後でそのサイズを動的に設定する必要があるユーザー コントロールに対してこれを行う必要がありました。サイズを設定すると、OP で発生していた強調表示が発生しました。

于 2012-11-07T23:04:25.640 に答える
2

これを試してみてください

combo.SelectedText = String.Empty;

フォーカスに関する問題について: ( MSDN )

コンボ ボックスがフォーカスを失うと、選択ポイントがテキストの先頭に移動し、選択したテキストが選択解除されます。

とても奇妙; 以下がうまくいかなかった理由:

anotherControl.Focus(); 
于 2011-10-27T13:37:55.890 に答える
2

このコードを、生成されたイベントに配置するか、コンボ ボックスのテキストの選択を解除したい場所でボタンをクリックするだけです。

ComboBox1.SelectedItem = null;
于 2015-02-16T10:39:54.707 に答える
1

あなたがこの質問をしてからしばらく経ちました。しかし、ここにあなたができることがあります

combo.selectedindex = -1;
于 2012-06-29T20:16:45.990 に答える
1

ユーザーが ComboBox 値を編集できるかどうかを指定していません。そうでない場合はDropDownStyle、ComboBox を に設定する必要がありますComboBoxStyle.DropDownList。このように、ComboBox は既存の値の選択のみを許可し、ユーザーは新しい値を入力できず、テキストが強調表示されることはありません。

于 2013-05-30T08:00:32.407 に答える
0

これが私がすることです:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}
于 2013-02-05T01:36:51.627 に答える
0

私の場合、サイズ変更後に選択が表示されました。これで解決しました:

textBox.Resize += (sender, args) =>
{
    Control c = sender as Control;
    if (c == null || c.Parent == null)
        return;

    c.Focus();
    c.Parent.Focus();
};
于 2016-09-26T20:42:46.240 に答える
0

ComboBox のフォーカスを設定するタスクを持つ "SelectedIndexChanged" イベントをサブスクライブします。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    comboBox1.Focus();
}

メインフォームから「ペイント」イベントにサブスクライブします。選択解除は、次のイベント ハンドラーで行われます。

private void MainForm_Paint(object sender, PaintEventArgs e)
{
    comboBox1.SelectionLength = 0;
}
于 2018-08-28T20:03:07.077 に答える
0

これらの3行は私を助けました:

cbInstallationType.SelectionStart = 0;
cbInstallationType.SelectionLength = 0;
cbInstallationType.TabIndex = 99;

TabIndex は、フォームの最初の項目にならないように、最初のものである必要はありません

于 2014-10-22T20:25:51.357 に答える
0

バックグラウンドで何をしているのか、つまり発生したイベントなどがわからない。ただし、コンボックスの selectedindexchanged イベントでは、anotherControl.Select() を追加できます。

それはすべきです:)

于 2011-10-27T14:02:24.207 に答える
-1

これが何歳かは気にしません。ナレッジベースを構築しています。

私は D5 を使用しています (おそらく以前のバージョンも同じです)。以下を使用する必要があります。

Combobox.SelLength :=  0; 

また、それがうまくいかない場合は、これでうまくいきます: デフォルトのスタイル (csDropDown) を避けます。そして、次のように設定します。

Combobox.Style := csDropDownList; 

アレックスが提案したように。

ありがとうございました。よく働く!

于 2016-06-28T08:43:40.120 に答える