我真的很难将我的函数InlogLeerling()
从.cs文件Login.cs
调用到MainPage.xaml.cs
。
我确实尝试了一切,但我已经找到了一些答案,但我不明白我是如何让它在我的项目中运作的。当我调用函数InlogLeerling()
时,我收到错误There is no argument given that corresponds to the required formal parameter 'mainpage' of 'Login.InlogLeerling(MainPage)'
以下是我在Login.cs
namespace VerlofXamarin.Logical_Layer
{
public class Login
{
public string pu_Gebruikersnaam, pu_Wachtwoord, pu_LogLeerling;
string Gebruikersnaam
{
get { return pu_Gebruikersnaam; }
set { pu_Gebruikersnaam = value; }
}
string Wachtwoord
{
get { return pu_Wachtwoord; }
set { pu_Wachtwoord = value; }
}
public MainPage mainpage;
private void InlogLeerling(MainPage mainpage)
{
Data_Layer.Verbinding vv = new Data_Layer.Verbinding();
this.mainpage = mainpage;
try
{
if(string.IsNullOrEmpty(pu_Gebruikersnaam) == true || string.IsNullOrEmpty(pu_Wachtwoord) == true)
{
mainpage.pu_LeerlingLog = "Vul gebruikersnaam en wachtwoord in!";
return;
}
vv.con.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT leerlinggebruikersnaam, leerlingwachtwoord FROM arabignl_project.myfirstmodule$leerlinglogin WHERE (leerlinggebruikersnaam = @gebruiker AND leerlingwachtwoord = @wachtwoord)", vv.con);
cmd.Parameters.AddWithValue("@gebruiker", pu_Gebruikersnaam.ToString());
cmd.Parameters.AddWithValue("@wachtwoord", pu_Wachtwoord.ToString());
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
mainpage.pu_LeerlingLog = "Inloggen gelukt";
}
}
else
{
mainpage.pu_LeerlingLog = "Inloggen mislukt";
}
reader.Close();
}
catch (MySqlException ex)
{
mainpage.pu_LeerlingLog = ex.ToString();
}
finally
{
vv.con.Close();
}
}
}
}
MainPage.xaml.cs
namespace VerlofXamarin
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
public Login login;
public string pu_LeerlingLog
{
get { return LoginLog.Text; }
set { LoginLog.Text = value; }
}
public string pu_LeerlingGebruikersnaam
{
get { return LeerlingGebruikersnaam.Text; }
}
public string pu_LeerlingWachtwoord
{
get { return LeerlingWachtwoord.Text; }
}
public void LoginKlik(Login login)
{
this.login = login;
login.InlogLeerling();
}
我已经尝试了很多东西。
答案 0 :(得分:2)
您的代码中存在两个问题。
您的方法需要MainPage
类型的参数。所以你必须提供它,这正是你的错误所说的:
public void LoginKlik(Login login)
{
this.login = login;
login.InlogLeerling(this);
}
除了那些你不应该公开露出一个字段。而是使用您可以在班级中修改的公共财产并在课堂外阅读 Login
:
public MainPage MainPage { get; private set; }
答案 1 :(得分:0)
你应该学习访问修饰符。对于私有,其他类无法访问它。所以你可以将它改为内部或公共。这是参考 - https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers
internal void InlogLeerling(MainPage mainpage)
答案 2 :(得分:0)
您将无法调用该方法,因为它们不在同一个类中。 当您提供 privte 的访问修饰符时,只能在类中进行访问。 如果您想提供更多访问权限,请访问:
protected - 受保护的成员可在其类和派生类实例中访问。
内部 - 内部类型或成员只能在同一程序集中的文件中访问。(即相同的编译程序)
公开 - 。公共访问是最宽松的访问级别。没有限制
因此,通过使用内部或公共(取决于您需要更大的方面),您将能够在项目的其他类中访问此方法