显示基于登录比较的按钮
本文关键字:比较 按钮 登录 于登录 显示 | 更新日期: 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;