Zrobiłem program rozwiązujący prosty układ równań. Został stworzony jako Console Application. Teraz chciałbym, aby "przekonwertować" to na aplikację okienkową. Zamiast wprowadzania zmiennych wpisywać się je ma do textbox'a. X i Y obliczać będzie po naciśnięciu buttona.
A w czym problem, że tak zapytam ?
Nie chcę mieć konsolowej aplikacji.
Ale w czym problem ?
Nie wiesz jak utworzyć projekt w WF ? nie wiesz jak pobrać wartość z textbox-a ? Czy chcesz aby ktoś to Tobie przepisał na WF ?
Pokażę Ci jak wyobrażam sobie to i jak jest obecnie
No i wygląda zajebiście, więc w czym problem ? że jak klikasz na Oblicz nic się nie dzieje ?
No dokładnie. A wyobrażenie nie jest gotowe. Tylko wizualna strona.
Pokaż kod, skąd mamy wiedzieć co jest nie tak?
Klikasz w Visual studio dwa razy na "Oblicz" utworzy Tobie metodę w pliku cs. Musisz pobrać dane z TextBoxa. Zrobić konwersje z typu String do Double i dalej jak w Twoim programie. Jedyny mankament, że nie możesz użyć już swojej klasy ponieważ zawiera ona logikę "biznesowa" oraz warstwę prezentacji. Dlatego musisz od nowa zrobić obliczenia w ramach projektu WF.
Zrobiłem kod, jednak wszystkie zmienny pokazuje jako błąd: The name 'a' does not exist in the current context.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double a = double.Parse(aTextBox.Text);
double b = double.Parse(bTextBox.Text);
double c = double.Parse(cTextBox.Text);
double n = double.Parse(nTextBox.Text);
double m = double.Parse(mTextBox.Text);
double k = double.Parse(kTextBox.Text);
double w, y, x, wynikx, wyniky;
w = wspolczynnik();
x = wspolczynnik_x();
y = wspolczynnik_y();
if (w == 0 && x == 0 && y == 0)
{
label1.Text = "Układ nieoznaczony. Nieskończenie wiele rozwiązań.";
}
else if (w == 0)
{
label1.Text = "Brak rozwiązania. Układ sprzeczny";
}
else
{
wynikx = x / w;
wyniky = y / w;
label1.Text = "X wynosi: " + wynikx;
label2.Text = "Y wynosi: " + wyniky;
}
}
public double wspolczynnik()
{
return (b * n) - (a * m);
}
public double wspolczynnik_x()
{
return (b * k) - (c * m);
}
public double wspolczynnik_y()
{
return (c * n) - (a * k);
}
public double wynik_x()
{
return x / w;
}
public double wynik_y()
{
return y / w;
}
}
}
Zmienne które deklarujesz w jednej metodzie są widoczne tylko w niej, żadna inna metoda nie ma do nich dostępu.
Musisz te zmienne przekazać do innej metody jako parametry, czyli:
public double wspolczynnik(double b, double n, double a, double m)
{
return (b * n) - (a * m);
}
Dzięki, tylko teraz wyskakuje błąd No overload for method 'wspolczynnik' takes 0 arguments przy
w = wspolczynnik();
Skąd ty się urwałeś? Przeczytaj jakiś kurs.
w = wspolczynnik(b,n,a,m);