![](/img/trans.png)
[英]How to call JavaScript/jQuery function from .cs file (C#)
[英]Can't call C# function from other .cs file
我真的InlogLeerling()
從.cs文件Login.cs
到MainPage.xaml.cs
調用函數InlogLeerling()
。
我確實做了所有嘗試,但已經找到了一些答案,但是我不明白如何在項目中使用它。 當我調用函數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();
}
我已經嘗試了很多東西。
您的代碼中有兩個問題。
您的方法需要一個MainPage
類型的參數。 因此,您必須提供它,這正是錯誤所指出的內容:
public void LoginKlik(Login login) { this.login = login; login.InlogLeerling(this); }
除了那些之外,您不應該公開露面。 而是使用一個公共屬性,你可以你的類中修改和類的外部閱讀 Login
:
public MainPage MainPage { get; private set; }
您應該學習訪問修飾符。 如果使用private,其他類將無法訪問它。 因此,您可以將其更改為內部或公共。 這是參考-https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/access-modifiers
internal void InlogLeerling(MainPage mainpage)
您將無法調用該方法,因為它們不在同一類中。 當您將訪問修飾符賦予privte時 ,只能在該類中進行訪問。 如果您想授予更多訪問權限,請執行以下操作:
protected-受保護的成員可以在其類內以及派生類實例進行訪問。
內部 -內部類型或成員只能在同一程序集中的文件(即,相同的已編譯程序)中訪問。
公共 -。 公共訪問是最寬松的訪問級別。 沒有限制
為此,通過使用內部或公共(取決於更大方面的需求),您將能夠在項目的其他類中訪問此方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.