Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForm UI上txt文件项的动态复选框_C#_Winforms_Dynamic_Checkbox_Text Files - Fatal编程技术网

C# WinForm UI上txt文件项的动态复选框

C# WinForm UI上txt文件项的动态复选框,c#,winforms,dynamic,checkbox,text-files,C#,Winforms,Dynamic,Checkbox,Text Files,早上好, 实际上我有两个问题。我的第一个问题是这叫什么?节目?模块 WhatIsThisCalled() { //workToBeDone } 我正在尝试从文本文件中的每个条目创建动态复选框。我试图重用代码,因此我尝试在逻辑文件中创建模块。我觉得我做得对,但我无法测试。我想不出如何引用 this.Controls.Add(chk[I]); 到winForm,我想调用它。我得到的错误是关于它在静态方法中是非法的。我只想清除错误(最后一个),这样我就可以看到它是否会将复选框放在正确的

早上好,

实际上我有两个问题。我的第一个问题是这叫什么?节目?模块

WhatIsThisCalled()
 {
   //workToBeDone
 }
我正在尝试从文本文件中的每个条目创建动态复选框。我试图重用代码,因此我尝试在逻辑文件中创建模块。我觉得我做得对,但我无法测试。我想不出如何引用

this.Controls.Add(chk[I]); 
到winForm,我想调用它。我得到的错误是关于它在静态方法中是非法的。我只想清除错误(最后一个),这样我就可以看到它是否会将复选框放在正确的winForm Permissions.cs上。这是我的Logic.cs模块

    public static void getPermText()
    {
        Stream fileStream = File.Open(dataFolder + PermFile, FileMode.Open);
        StreamReader reader = new StreamReader(fileStream);

        string line = null;

        do
        {
            line = reader.ReadLine();
            if (line == null)
            {
                break;
            }

            string[] parts = line.Split('\n');

            try
        {

            int userCount;

            userCount = parts.Length;

            CheckBox[] chk = new CheckBox[userCount];
            int height = 1;
            int padding = 10;

            for (int i = 0; i <= userCount; i++)
            {
                chk[i] = new CheckBox();

                chk[i].Name = parts.ToString();

                chk[i].Text = parts.ToString();

                chk[i].TabIndex = i;

                chk[i].AutoCheck = true;

                chk[i].Bounds = new Rectangle(15, 30 + padding + height, 150, 22);

                this.Controls.Add(chk[i]);

                height += 22;

            }

        }

        catch
        {
        }
        } while (true);


    }
有人能告诉我如何,或者如果可能的话,用动态格式替换权限吗??我想


提前非常感谢您的关注和帮助。我真的很感激。祝你今天愉快!!:)

我很难理解你想说什么。我想您只想引用
复选框应在其中创建的表单

因此,您最好传递要在其上创建控件的窗体的引用:

public static void getPermText(System.Windows.Forms.Form targetForm)
{
    //code
    targetForm.Controls.Add(chk[i]);  //changed "this" to "targetForm"
要调用该方法,请执行以下操作:

WidgetLogic.getPermText(this);  //here "this" refers to the current form
现在,无论在何处调用此方法,它都将在窗体上创建控件(作为参数传递的控件)


如果您的问题有误,请通知我。

静态
函数:您无法访问静态函数中的任何对象,因此
在此类
静态
函数中不可用。对不起,你的真实意图还不清楚。也许可以尝试重新表述问题/添加更多代码/所需屏幕截图等?请参见@shaharyar下面的答案。这就是我的问题所在。如何访问targetForm。我道歉。我是个新手。我只是想努力做到这一点。:)您的第一个问题是一个
私有
构造函数的示例,它通常用于所有内容都是
静态
的类中,其中一个空构造函数用于替换默认构造函数,因此该类无法实例化。是!!这正是我想做的。我将很快试用您的代码。回到我真正的工作中:)@shaharyar你觉得你能回答我的第一个问题吗??whatIsThat()调用了什么?称为方法或函数的。但它应该有一个返回类型。奖金!!谢谢你。我想我的方法。我习惯于出类拔萃。这是一个函数,所以我想我不会猜错我会告诉你发生了什么。谢谢,太棒了!!那很好用。现在,我必须仔细阅读代码,找出为什么标签读取system.form而不是文件中的行。很确定我没有增加它们是一个问题。非常感谢。我会把结果贴在这里。祝你今天愉快-DIf您仍然有问题,但与此问题无关。你可以问另一个具体问题
WidgetLogic.getPermText(this);  //here "this" refers to the current form