c# - C#:不能使用创建动态对象的库中的 Controls 属性
问题描述
我刚开始,我想创建一个可以在我的主表单中使用的库。库的作用是为我的表单创建动态对象(标签),但是当我编译项目时,我在this.Controls.Add(genLabel)这一行收到了这条消息:
错误 CS0120 非静态字段、方法或属性“Control.Controls”需要对象引用
如果我复制库包含并放入表单中,则不会出现此错误。有人可以向我解释我应该如何更正代码吗?
我的库中的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using mainProgram;
namespace LabelClass
{
class labelClass
{
public void genLabel(string x)
{
List<char> bits = new List<char>();
int i = x.Length - 1;
int nrbit = 0;
do
{
bits.Add(x[i]);
i -= 1;
}
while (i >= 0);
i = bits.Count - 1;
int minus = 0;
do
{
Label genLabel = new Label();
genLabel.Name = "bits" + Convert.ToString(nrbit);
genLabel.Text = bits[i] + "";
genLabel.Size = new Size(50, 20);
genLabel.Location = new Point(734 - minus, 86);
minus += 60;
i -= 1;
this.Controls.Add(genLabel);
}
while (i >= 0);
}
}
}
解决方案
我确实像 jdweng 所说的那样工作。我在 genLabel 中添加了一个类型为 Form 的新参数,并在主程序中调用了我使用“this”关键字的方法。
图书馆:
public void genLabel(Form form, string x)
主程序:
private void btnSubmit_Click(object sender, EventArgs e)
{
saveString = obj.checkStringContainHex(textBox1.Text);
if(saveString != "Error")
{
saveInt = obj.convertHexToDec(saveString);
saveString = obj.convertDecToBin(saveInt);
labelClass labelClass = new labelClass();
labelClass.genLabel(this, saveString);
}
}
推荐阅读
- python - 我需要做一个根据选择即时更改的表格
- excel - 聚合函数(小)返回零而不是最小值
- android - 如何使用 ConstraintLayout 在 DimensionRatio 上设置 maxHeight?
- c - CMSIS_OS2.c 无法编译
- reactjs - 如何在 JSX 中重构 switch 语句
- r - 按字符/因子值合并两个数据集;保持较小的数据集
- google-cloud-functions - 云功能部署下降了吗?
- java - 如何替换通过属性加载的字符串中的空格
- c - 如何将长度的数组大小作为用户输入?
- asp.net - 如何访问从 aspx 到 .jsx 的变量