C# 为什么ShowDialog在我的文本框中选择文本?
我有一个非常简单的错误,我正试图弹出。当我调用ShowDialog时,文本框中的所有文本都被选中。看起来很傻。当我在ShowDialog之前打断时,不会选择任何文本。调用ShowDialog后,将选择所有文本,无需任何用户交互C# 为什么ShowDialog在我的文本框中选择文本?,c#,.net,winforms,C#,.net,Winforms,我有一个非常简单的错误,我正试图弹出。当我调用ShowDialog时,文本框中的所有文本都被选中。看起来很傻。当我在ShowDialog之前打断时,不会选择任何文本。调用ShowDialog后,将选择所有文本,无需任何用户交互 static void ShowError(string error) { var form = new Form { Text = "Unexpected Error", S
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();
}
您可以将
SelectionStart=0、SelectionLength=0
或Enabled=false
添加到文本框创建代码中尝试显式设置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();
}
好吧,如果你设置TabStop=false;将取消选择该控件。但是,ReadOnly意味着您的用户可以始终手动选择文本
从MSDN-
。当属性设置为true时,用户仍可以滚动并突出显示文本框中的文本,而不允许进行更改。
已尝试修改选择,但无效。正如我所说,在ShowDialog之前,没有选择,即SelectedText==“”、SelectionStart==0和SelectionLength==0。Enabled=false可以工作,但它会使文本变为灰色,我希望用户能够复制/粘贴错误。@MattChambers我通过添加SelectionStart=0,SelectionLength=0尝试了您的代码,它工作了!这一定是个bug。它仅适用于SelectionStart=0;SelectionLength=0与此无关。但我再次确认,在调用ShowDialog之前,即使没有SelectionStart=0,SelectionStart==0!在模态表单中的所有我的文本框中将TabStop设置为false效果很好。这是史蒂夫在下面提出的,对我来说似乎是最好的选择。