与 c# 中的单击事件方法不同 class 的调用方法
Call method in different class from click event method in c#
我正在尝试调用位于另一个 class 中的方法 "BeräknaLön",而不是单击事件方法。点击事件方法位于class"PersonalRegister"部分,我打算调用的方法位于class"Säljare"。
提前致谢
//索林
Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PersonalRegister
{
public partial class Personalregister : Form
{
//Deklarering av lista över anställda
List<Anställd> anställda = new List<Anställd>();
Anställd medarbetare;
public Personalregister()
{
InitializeComponent();
}
private void Btn_reg_försäljare_Click(object sender, EventArgs e)
{
//Deklarera variabler för namn, provision samt försäljning och tilldela värden
//från textrutor
string n = tbx_säljare_namn.Text;
double p = Convert.ToDouble(tbx_säljare_provision.Text);
double f = Convert.ToDouble(tbx_säljare_försäljning.Text);
tbxml_register.AppendText(" " + n + " (Säljare) \r\n");
Säljare.BeräknaLön(); //Error message suggests an "Object reference" is required here
}
private void Btn_reg_arbetspass_Click(object sender, EventArgs e)
{
string n = tbx_Konsult_namn.Text;
double t = Convert.ToDouble(tbx_Konsult_timlön.Text);
double a = Convert.ToDouble(tbx_Konsult_timmar.Text);
tbxml_register.AppendText(" " + n + " (Konsult) \r\n");
}
private void Btn_reg_mLön_Click(object sender, EventArgs e)
{
string n = tbx_kontorist_namn.Text;
double m = Convert.ToDouble(tbx_kontorist_mLön.Text);
tbxml_register.AppendText(" " + n + " (Kontorist) \r\n");
}
private void Btn_beräkna_löner_Click(object sender, EventArgs e)
{
}
}
}
class "Säljare"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PersonalRegister
{
class Säljare : Anställd
{
double provision;
double försäljning;
public Säljare(string n, double p, double f)
{
this.namn = n;
this.provision = p;
this.försäljning = f;
}
public override double BeräknaLön()
{
return försäljning * (provision / 100);
}
}
}
由于 BeräknaLön
是实例方法(与 static
方法相对),您需要先创建 Säljare
class 的实例,然后才能调用它,这正是错误消息告诉您的内容。
例如:
private void Btn_reg_försäljare_Click(object sender, EventArgs e)
{
string name = tbx_säljare_namn.Text;
double provision = Convert.ToDouble(tbx_säljare_provision.Text);
double sales = Convert.ToDouble(tbx_säljare_försäljning.Text);
tbxml_register.AppendText(" " + n + " (Säljare) \r\n");
// Create a new instance of our class
Säljare seller = new Säljare(name, provision, sales);
// Now we can call the method on the instance we just created
double salary = seller.BeräknaLön();
}
我正在尝试调用位于另一个 class 中的方法 "BeräknaLön",而不是单击事件方法。点击事件方法位于class"PersonalRegister"部分,我打算调用的方法位于class"Säljare"。 提前致谢 //索林
Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PersonalRegister
{
public partial class Personalregister : Form
{
//Deklarering av lista över anställda
List<Anställd> anställda = new List<Anställd>();
Anställd medarbetare;
public Personalregister()
{
InitializeComponent();
}
private void Btn_reg_försäljare_Click(object sender, EventArgs e)
{
//Deklarera variabler för namn, provision samt försäljning och tilldela värden
//från textrutor
string n = tbx_säljare_namn.Text;
double p = Convert.ToDouble(tbx_säljare_provision.Text);
double f = Convert.ToDouble(tbx_säljare_försäljning.Text);
tbxml_register.AppendText(" " + n + " (Säljare) \r\n");
Säljare.BeräknaLön(); //Error message suggests an "Object reference" is required here
}
private void Btn_reg_arbetspass_Click(object sender, EventArgs e)
{
string n = tbx_Konsult_namn.Text;
double t = Convert.ToDouble(tbx_Konsult_timlön.Text);
double a = Convert.ToDouble(tbx_Konsult_timmar.Text);
tbxml_register.AppendText(" " + n + " (Konsult) \r\n");
}
private void Btn_reg_mLön_Click(object sender, EventArgs e)
{
string n = tbx_kontorist_namn.Text;
double m = Convert.ToDouble(tbx_kontorist_mLön.Text);
tbxml_register.AppendText(" " + n + " (Kontorist) \r\n");
}
private void Btn_beräkna_löner_Click(object sender, EventArgs e)
{
}
}
}
class "Säljare"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PersonalRegister
{
class Säljare : Anställd
{
double provision;
double försäljning;
public Säljare(string n, double p, double f)
{
this.namn = n;
this.provision = p;
this.försäljning = f;
}
public override double BeräknaLön()
{
return försäljning * (provision / 100);
}
}
}
由于 BeräknaLön
是实例方法(与 static
方法相对),您需要先创建 Säljare
class 的实例,然后才能调用它,这正是错误消息告诉您的内容。
例如:
private void Btn_reg_försäljare_Click(object sender, EventArgs e)
{
string name = tbx_säljare_namn.Text;
double provision = Convert.ToDouble(tbx_säljare_provision.Text);
double sales = Convert.ToDouble(tbx_säljare_försäljning.Text);
tbxml_register.AppendText(" " + n + " (Säljare) \r\n");
// Create a new instance of our class
Säljare seller = new Säljare(name, provision, sales);
// Now we can call the method on the instance we just created
double salary = seller.BeräknaLön();
}