我有一个帮助程序类,可以处理工具栏的一些方法。现在我已经创建了 5 个具有不同重载的构造函数。我的问题是,如何使这个构造函数重载更简单?我这样做的方式是有效的,但万一我需要实现 f.e. 10 个 RichTextBox,我不想为每个可能的 RichTextBox 创建重载并在方法中处理每个人。我相信有一种更简单的方法,但无论如何,我可以解决这个问题。
我尝试创建一个列表,但收到错误,因为我无法创建逻辑命名空间的列表。
public class RichtTextBoxHelper
{
private RichTextBox _textBox;
private RichTextBox _textbox2;
private RichTextBox _textbox3;
private RichTextBox _textbox4;
private RichTextBox _textbox5;
public RichtTextBoxHelper(RichTextBox textBox)
{
_textBox = textBox;
}
public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2)
{
_textBox = textBox;
_textbox2 = textbox2;
}
public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3)
{
_textBox = textBox;
_textbox2 = textbox2;
_textbox3 = textbox3;
}
public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4)
{
_textBox = textBox;
_textbox2 = textbox2;
_textbox3 = textbox3;
_textbox4 = textbox4;
}
public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4, RichTextBox textbox5)
{
_textBox = textBox;
_textbox2 = textbox2;
_textbox3 = textbox3;
_textbox4 = textbox4;
_textbox5 = textbox5;
}
public void CutClick()
{
_textBox.Cut();
_textbox2.Cut();
_textbox3.Cut();
_textbox4.Cut();
_textbox5.Cut();
}
各种方法,如剪切方法。
有没有更简单、更干净的方法来做到这一点?
最佳答案
您应该使用 RichTextBox
数组:
private RichTextBox[] textBoxes;
现在你只需要一个构造函数:
public RichtTextBoxHelper(params RichTextBox[] textBoxes) {
this.textBoxes = textBoxes ?? throw new ArgumentNullException(nameof(textBoxes));
}
如果存在可以处理的文本框的最大数量,请检查:
public RichtTextBoxHelper(params RichTextBox[] textBoxes) {
if (textBoxes is null)
{
throw new ArgumentNullException(nameof(textBoxes));
}
if (textBoxes.Length > maxTextBoxes) :
throw new ArgumentException("Too many text boxes!", nameof(textBoxes))
}
this.textBoxes = textBoxes;
}
CutClick
方法可以很简单:
public void CutClick() {
foreach(var textBox in textBoxes) {
textBox.Cut();
}
}
关于c# - 如何使过载变得更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141882/