Jak do parametrów button_click dodać MouseEventArgs, żeby w disignerze nie wyświetlało błędu?

0

Chodzi o taki problem. Już mi program działał. Mam w nim zdefiniowaną w ten sposób funkcję:

public override void narysuj(MouseEventArgs e)
{
       jakiś sobie kod;
}
 

Ale teraz utworzyłem na formatce przycisk, w którym jako parametr nie mam MouseEventsArgs tylko jest EventsArgs.
Przycisk ma przesuwać obiekty na pictureboxie o losową wartość.
Co mam zrobić, żeby compilator nie wyświetlał takiego errora:
Error 2 'System.EventArgs' does not contain a constructor that takes 1 arguments
hmm?

0

Błąd kompilatora nie wynika bezpośrednio z kodu, który pokazałeś i mówi o tym, że obiekt EventArgs nie posiada konstruktora przyjmującego jeden parametr.
Czy jakiś sobie kod; korzysta z czegoś więcej niż e.X i e.Y?
Na podstawie kodu z metody narysuj(MouseEventArgs e) wydziel sobie metodę narysuj(int xCord, int yCord), a w miejscu gdzie chcesz wywołać ten sam kod po kliknięciu przycisku(nie mając X i Y) losujesz sobie te 2 liczby z wybranego zakresu i również wywołujesz narysuj(int xCord, int yCord);

0

Xiuthechutli, nie bardzo rozumiem. Co to znaczy: wydziel sobie metodę narysuj?

Nie rozumiem też pytania: Czy jakiś sobie kod; korzysta z czegoś więcej niż e.X i e.Y?

Już tak abstrahując od tego, że w pewnym sensie ominąłem problem, bo utworzyłem sobie na tym przycisku zdarzenie MouseDown i teraz już errorów żadnych nie mam. Niestety kłopot nie zniknał, bo i tak mi tych figur nie przesuwa.

0

Dlaczego typem parametru dla metody narysuj jest MouseEventArgs? Czy w wewnątrz tej metody korzystasz z jakichś elementów parametru?

0

Dokładnie tak. Korzystam z parametru MouseEventsArgs e w ten sposób i wolałbym tego już nie zmieniać.

 
public override void narysuj(MouseEventArgs e)
            {
bs_szer = Math.Abs(e.Location.X - bs_Punkt.X);
                bs_wys = Math.Abs(e.Location.Y - bs_Punkt.Y);
                if (bs_Punkt.X > e.Location.X)
                {
                    //przypisanie ostatecznej lokalicacji z do zmiennej bs_lewy_naroznik_x
                    bs_lewy_naroznik_x = e.Location.X;
                }
                else
                {
                    //w przeciwnym razie przypisa punkt poczatkowy do lewego naroznika
                    bs_lewy_naroznik_x = bs_Punkt.X;
                }
                if (bs_Punkt.Y > e.Location.Y)
                {
                    bs_lewy_naroznik_y = e.Location.Y;
                }
                else
                {
                    bs_lewy_naroznik_y = bs_Punkt.Y;
                }
                bs_na_planszy_do_rysowania.DrawRectangle(bs_pioro, new Rectangle(bs_lewy_naroznik_x, bs_lewy_naroznik_y, bs_szer, bs_wys));
                
            }
        }
1
public void buttonClick_narysujRandom(/*Tutaj parametry dla eventu z przycisku, żeby mieć zgodną sygnaturę, jak klikniesz w przycisk z designera to Ci się stworzy taka metoda*/)
{
	var rand = new Random();
	var randomPoint = new Point(rand.Next(0,50), rand.Next(0,50));
	narysuj(randomPoint);
}


public override void narysuj(MouseEventArgs e)
{
	narysuj(e.Location);
}

public void narysuj(Point cords)
{
	bs_szer = Math.Abs(cords.X - bs_Punkt.X);
	bs_wys = Math.Abs(cords.Y - bs_Punkt.Y);
		if (bs_Punkt.X > cords.X)
	{
		//przypisanie ostatecznej lokalicacji z do zmiennej bs_lewy_naroznik_x
		bs_lewy_naroznik_x = cords.X;
	}
	else
	{
		//w przeciwnym razie przypisa punkt poczatkowy do lewego naroznika
		bs_lewy_naroznik_x = bs_Punkt.X;
	}
	if (bs_Punkt.Y > cords.Y)
	{
		bs_lewy_naroznik_y = cords.Y;
	}
	else
	{
		bs_lewy_naroznik_y = bs_Punkt.Y;
	}
	bs_na_planszy_do_rysowania.DrawRectangle(bs_pioro, new Rectangle(bs_lewy_naroznik_x, bs_lewy_naroznik_y, bs_szer, bs_wys)); 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1