Pourquoi ComboBox se cache le curseur quand DroppedDown est réglé?

Créons Application WinForms (j'ai Visual Studio 2008 en cours d'exécution sur Windows Vista, mais il semble que la situation décrite se déroule presque partout à partir de Win98 pour Vista, sur code natif ou géré).

Écrire un tel code:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class Form1 : Form
    {
        private readonly Button button1 = new Button();
        private readonly ComboBox comboBox1 = new ComboBox();
        private readonly TextBox textBox1 = new TextBox();

        public Form1() {
            SuspendLayout();
            textBox1.Location = new Point(21, 51);
            button1.Location = new Point(146, 49);
            button1.Text = "button1";
            button1.Click += button1_Click;
            comboBox1.Items.AddRange(new[] {"1", "2", "3", "4", "5", "6"});
            comboBox1.Location = new Point(21, 93);
            AcceptButton = button1;
            Controls.AddRange(new Control[] {textBox1, comboBox1, button1});
            Text = "Form1";
            ResumeLayout(false);
            PerformLayout();
        }

        private void button1_Click(object sender, EventArgs e) {
            comboBox1.DroppedDown = true;
        }
    }
}

Ensuite, exécutez l'application. Placez le curseur de la souris sur la forme et ne pas toucher à la souris plus. Commencez à taper quelque chose dans la zone de texte - curseur se cacher à cause de cela. Lorsque vous appuyez sur la touche Entrée - événement de jette et de la zone de liste déroulante sera tombé. Mais maintenant, le curseur ne s'affiche pas même si vous vous déplacez! Et apparaît uniquement lorsque vous cliquez quelque part.

Il y J'ai trouvé la discussion de ce problème. Mais il n'y a pas de bonne solution...

Toute pensée? 🙂

OriginalL'auteur Ivan Danilov | 2009-07-07