Почему ShowDialog выделяет текст в моем TextBox? - PullRequest
2 голосов
/ 25 февраля 2012

У меня очень простое всплывающее окно с ошибкой, которое я пытаюсь сделать.Когда я вызываю ShowDialog, весь текст в текстовом поле выделяется.Это выглядит глупо.Когда я ломаюсь прямо перед ShowDialog, текст не выделяется.После вызова ShowDialog весь текст выделяется без какого-либо взаимодействия с пользователем.

    static void ShowError(string error)
    {
        var form = new Form
        {
            Text = "Unexpected Error",
            Size = new System.Drawing.Size(800, 600),
            StartPosition = FormStartPosition.CenterParent,
            ShowIcon = false,
            MinimizeBox = false,
            MaximizeBox = false
        };

        var textBox = new TextBox
        {
            Text = error,
            Dock = DockStyle.Fill,
            Multiline = true,
            ReadOnly = true,
        };

        form.Controls.Add(textBox);
        form.ShowDialog();
    }

Ответы [ 3 ]

3 голосов
/ 25 февраля 2012

Вы можете добавить SelectionStart=0, SelectionLength = 0 или Enabled = false к вашему коду создания textBox

2 голосов
/ 25 февраля 2012

Хорошо, если вы установите TabStop = false; элемент управления будет отменен. Однако ReadOnly означает, что ваш пользователь всегда может выбрать текст вручную.

ОТ MSDN - . With the property set to true, users can still scroll and highlight text in a text box without allowing changes.

0 голосов
/ 25 февраля 2012

Попробуйте установить SelectionStart явно, хотя я не уверен, почему это необходимо:

static void ShowError(string error)
{
    var form = new Form
    {
        Text = "Unexpected Error",
        Size = new System.Drawing.Size(800, 600),
        StartPosition = FormStartPosition.CenterParent,
        ShowIcon = false,
        MinimizeBox = false,
        MaximizeBox = false
    };

    form.SuspendLayout();
    var textBox = new TextBox
    {
        Text = error,
        Name = "textBox1",
        Dock = DockStyle.Fill,
        Multiline = true,
        ReadOnly = true,
        SelectionStart = 0, // or = error.Length if you prefer
    };

    form.Controls.Add(textBox);
    form.ResumeLayout();
    form.PerformLayout();
    form.ShowDialog();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...