Вызов метода в другом классе из метода события click в c # - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь вызвать метод "BeräknaLön", который находится в другом классе, чем метод события click. Метод события click находится в частичном классе «PersonalRegister», а метод, который я собираюсь вызвать, находится в классе «Säljare». Заранее благодарен // Thorin

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)
        {

        }
    }
}

Класс "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);
        }
    }
}

1 Ответ

1 голос
/ 10 октября 2019

Поскольку BeräknaLön - это метод экземпляра (в отличие от static метода), вам нужно создать экземпляр класса Säljare, прежде чем вы сможете его вызвать, что именно и говорит вам сообщение об ошибке. .

Например:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...