为什么ShowDialog在我的TextBox中选择文本
本文关键字:选择 文本 TextBox 我的 ShowDialog 为什么 | 更新日期: 2023-09-27 18:25:59
我正在尝试制作一个非常简单的错误弹出窗口。当我调用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();
}
您可以将SelectionStart=0, SelectionLength = 0
或Enabled = false
添加到您的textBox创建代码
好吧,如果您设置TabStop=false;该控件将被取消选择。但是,ReadOnly意味着您的用户可以始终手动选择文本。
来自MSDN-. With the property set to true, users can still scroll and highlight text in a text box without allowing changes.
尝试显式设置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();
}