显示基于登录比较的按钮

本文关键字:比较 按钮 登录 于登录 显示 | 更新日期: 2023-09-27 18:23:35

我是C#的新手,我正在尝试实现一个基于txt文件内容的按钮.visible true/false。到目前为止,我写的所有东西充其量都是不稳定的。这适用于主对话框中的Winform独立应用程序。

在一个理想的世界里,它似乎应该更简单。我希望代码打开Permissions.txt,我知道我正在成功访问它,因为MessageBox将显示列表中的第一个名称,并将Environment.UserName.txt文件中的所有名称进行比较。按钮显示后,将打开一个新对话框。

任何愿意教新人的人。我已经搜索了一段时间,但没有看到。

我也尝试过使用File.Readlines,但没有成功。

提前感谢您愿意提供的任何帮助。

Frank Pytel

public void hideWidget()
    {
        //gets the users login name from the system
        string newName = userNameOnly();
        // Read the file and display it line by line.
        System.IO.StreamReader file =
           new System.IO.StreamReader(dataFolder + "''Permissions.txt");

        //This next bit called Original Code works on my local when I access it, when accessed from a server, but not for other users.
        //Original code
        //while ((line = file.ReadLine()) != null)
        //{
        //    if (line == newName)
        //    {
        //        WidgetForm.Visible = true;
        //    }
        //    else
        //    {
        //        WidgetForm.Visible = false;
        //    }
        //    //MessageBox.Show(line);
        //    counter++;
        //}
        //file.Close();               

//This is where I am at currently. Again it's not picking up all of the names in the .txt file.
        while (file.ReadLine() != null)
        {
            //string line;
            string line = file.ReadLine();
            if (newName == file.ReadLine())
            {
                WidgetForm.Visible = false;
            }
            else
            {
                WidgetForm.Visible = true;
            }
            int counter = 0;
            //MessageBox.Show(line);
            //MessageBox.Show(file.ReadLine());
            counter ++;
        }
        //file.Close();
    }

已编辑。。。。

还有,如果有人可以解释字符串是如何排列的;正在设置为我的用户名。这是应该设置的,但我从未在原始代码中告诉过它line==newName。我想这就是While的用途。检查它们是否相等。。

最终编辑。

这是我要做的工作。谢谢@Bedford。

该部分直接位于Form1类下方

string[] lines = File.ReadAllLines(dataFolder + "''Permissions.txt");

这是hideWidget()按钮背后的逻辑

        public void hideWidget()
    {
        //Make all userNames available to the logic
        string newName = userNameOnly();
        //variable to decide if userExists is true/false
        bool userExists;
        //Loop through all of the userNames in the file and see if it matches the userName login
        while (lines != null)
        {
            //Decide to make the button available if userExists does exist in the file
            if (lines != null)
            {
                userExists = lines.Any(ln => ln == newName);
                WidgetForm.Visible = userExists;
            }
                //Do nothing if the userName does not match anyone in the Permissions.txt file. The button default Visible is false
            else
            {
            }
            return;
        }
    }

我发布这个片段是为了让其他人从中受益。再次感谢@Bedford。新闻局非常感谢您的帮助。海格!!:-)

显示基于登录比较的按钮

您可以使用file.ReadAllLines静态方法读取文件中的所有行,然后使用LINQ查询来检查是否有任何行与用户名匹配:

string[] lines = File.ReadAllLines(Path.Combine(dataFolder, "Permissions.txt"));
bool userExists = lines.Any(ln => ln == newName); // or any comparison you like
// use the bool variable to set the visibility
WidgetForm.Visible = userExists;