2012-02-25 35 views
2

我想要製作一個非常簡單的錯誤彈出窗口。當我調用ShowDialog時,文本框中的所有文本都被選中。它看起來很傻。當我在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

您可以添加SelectionStart=0, SelectionLength = 0Enabled = false您的textBox創建代碼

+0

已經嘗試過修改選擇無濟於事。就像我說的,在ShowDialog之前,沒有選擇,即SelectedText ==「」,SelectionStart == 0和SelectionLength == 0. Enabled = false的作品,但它使文本灰色,我希望用戶能夠複製/粘貼錯誤。 – 2012-02-25 19:05:17

+1

@MattChambers我嘗試添加'SelectionStart = 0,SelectionLength = 0'的代碼,它的工作原理是 – 2012-02-25 19:10:40

+0

Bah!這一定是一個錯誤。它只適用於SelectionStart = 0; SelectionLength = 0是不相關的。但是我重新確認,即使沒有SelectionStart = 0,SelectionStart == 0在調用ShowDialog之前! – 2012-02-25 19:12:05

0

嘗試設置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(); 
} 
2

好吧,如果你設置接受tab = FALSE;該控件將被取消選擇。但是,ReadOnly表示您的用戶可以隨時手動選擇文本。

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