新手。
我想做一个应用程序,这是一个简单的窗口形式,这是一个登录窗口。使用数组引用登录用户名和密码。
到目前为止,这是我得到的。似乎遇到了代码错误。我似乎想不明白。
代码给了我一个错误,表示一个布尔值(true或false)。
代码图片:https://i.stack.imgur.com/uvmtP.png
private void btnLogin_Click(object sender, EventArgs e)
{
string[] Username = { "user1", "user2", "user3" };
string[] Password = { "Password1", "Password2", "Password3" };
if (Username[0].ToString() == Password[0])
this.Close();
th = new Thread(opennewform);
th.SetApartmentState(ApartmentState.STA);
th.Start();
if ((txtPasswd.Text == Username) && (txtUser.Text == Password))
{
Success_Login Success = new Success_Login();
Success.Show();
}
else
MessageBox.Show("Enter valid username and/or password");
}
}
许多谢谢。你想做什么?
第一个错误
您尝试将用户名文本与密码进行比较以进行验证没有意义
则尝试计算字符串数组和简单字符串之间的相等性。
所以先纠正这个得到答案
给我你
尝试做一些类似
的事情if(username[0] == txtuser.text && Password[0] == txtpassword.text)
{
// then your first user can login
}
,但这不是我们在c#中登录的方式密码不能存储在代码中,因为代码可以很容易地读取。
Username和Password是需要使用Array的字符串数组。包含或数组。检查TextBox值是否存在于这些数组中。
if(Array.Contains(Username, txtUser.Text) && Array.Contains(Password, Password.Text))
{
}
或者使用IndexOf
if(Array.IndexOf(Username, txtUser.Text) != -1 && Array.IndexOf(Password, txtPassword.Text)!= -1)
{
}
我认为您需要一个for循环来检查每个用户名和密码。让我写一个愚蠢的简单程序,但可行的登录过程。
我输出:User=user1, Password=abc login failed!!
User=user2, Password=xxx login failed!!
User user2 login success!!
User user1 login success!!
源代码:
using System;
namespace sam_StreamReader
{
class Program
{
static void Main(string[] args)
{
login("user1", "abc");
login("user2", "xxx");
login("user2", "Password2");
login("user1", "Password1");
}
static bool login(string p_user_name,string p_password)
{
String[] Username = { "user1", "user2", "user3" };
String[] Password = { "Password1", "Password2", "Password3" };
for(int i=0;i<Username.Length;i++)
{
if(p_user_name == Username[i])
{
if(p_password == Password[i])
{
System.Console.WriteLine("User "+p_user_name+" login success!!");
return true;
}
}
}
System.Console.WriteLine("User=" + p_user_name + ", Password="+p_password+" login failed!!");
return false;
}
}
}
希望有帮助~