我在这个网站上搜索了很多,发现了类似的问题,但没有一个答案可以帮助我。所以我要问问自己。我有这个代码,当我想把所有的文本框放到同一个事件时,它不起作用,这里是:
private void OnMouseUp(object sender, MouseEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectionLength = 0;
}
我通过查看本网站上其他类似问题的答案来制作此代码。 我也通过结合我在这个网站上找到的答案来制作这个:
private void OnMouseUp(object sender, MouseEventArgs e)
{
foreach (Control x in this.Controls)
{
if (x is TextBox)
{
((TextBox)x).SelectionLength = 0;
}
}
}
哪个也不起作用...... 有人可以告诉我将相同的事件发送到所有文本框的最简单方法吗?
答案 0 :(得分:3)
在表单类中添加textbox1.OnMouseUp+= OnMouseUp
。
答案 1 :(得分:1)
假设您希望表单上的每个 Textbox
都有此事件:
private void AssignEvent(Control.ControlCollection controls)
{
foreach (Control c in controls)
{
if (c is Textbox)
c.MouseUp += OnMouseUp;
if (c.HasChildren)
AssignEvent(c.Controls);
}
}
在您的Form_Load
中调用此方式:
AssignEvent(this.Controls);
此方法只是遍历表单上的每个控件,并且每个子控件(即Form
都有Groupbox
,Groupbox
有Textbox
)。如果它是Textbox
,则会分配该事件。如果不是,它只会转到下一个。
答案 2 :(得分:0)
我通过这样做来修复它:
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control x in this.Controls)
{
if (x is TextBox)
{
((TextBox)x).MouseUp += SLMethod;
}
}
}
static void SLMethod(object sender, MouseEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectionLength = 0;
}
这段代码的作用是让我无法使用鼠标在我的框中选择代码。这就是我想要的。 我真的不明白你的答案,但谢谢你!
答案 3 :(得分:0)
编辑:如果你想使用标准的.Net方式使你的文本框“不可选”:
foreach (Control x in this.Controls)
{
if (x is TextBox)
{
((TextBox)x).Enabled = false;
}
}
如果只是让鼠标无法选择它们,请将控件附加到您的活动中。