W miarę możliwości nie chce gotowych kodów, chce rad i sugestii oraz wytykania błędnego myślenia.
Jeśli nie chce Ci się wszystkiego czytać przejdź do podpunktu problem
**Opis docelowej aplikacji **
Zadaniem aplikacji jest pobieranie danych od użytkownika, będzie on przekazywał wejściowe informacje za pomocą panelu. Dane jakie podał będą pokazane w formie tabeli. Dane -> diagram EPC -> tekst opisujacy diagram (proces) -> reguły
W najbliższym czasie chce się skupić na przechowywaniu danych i tworzenie diagramu epc.
- stan aktualny**
tak wygląda panel sterowania, użytkownik ma do wyboru funkcje/zdarzenie/xor/or/and podczas dodawania elementu może dodać do niego opis/nazwę (w później wersji nr id poprzednika ), podczas wyboru przycisku dodaj, do kolekcji dodawany ma być obiekt danej klasy o parametrach zdefiniowanych w textboxach.
klasy na razie maja tylko dane jakie będą przechowywać, zależy jak mi zejdzie z dodawaniem tego do tabeli tak zacznę pracować nad forma, żeby można było je sparsować, by istniała możliwość wyświetlania diagramu
PROBLEM
CEL-kolekcja ma przechowywać obiekty różnych klas podrzędnych do klasy baza, ma być magazynem stworzonych obiektów przez użytkownika
- mała legenda* obiekty zdarzeń to obiekty powstałe z klas funkcjazdarzenia/xor/or/and, kolekcja dictionary ma je magazynować
#Od tego zacznę, nie wiem czy powinienem deklarować klasę dictionary jak to się robi w normalnej klasie, czytałem że ma ona wbudowane metody, więc chyba ten twór na samym dole jest zbędny. Tak samo jak tworzenie metody dodaj.
#Jeśli jednak, trzeba stworzyć klasę to nie wiem czy w środku klasy ma być zadeklarowana lista danych do których te obiekty zdarzeń będą dodawane, jak np string rodzaj w klasach zdarzeń, czy może ona jest już wbudowana i nie trzeba deklarować.
#Stworzyłem obiekt tej klasy, który będzie powstawał do życia, przy pierwszym naciśnięciu buttona7.
Konsekwencja niejasności i chyba błędów jest fakt że wyskakują mi błędy przy dodawaniu linijki, która byłaby odpowiedzialna za dodanie nowego rekordu do kolekcjio dictionary naszalista:
naszalista.add(new baza(2, "xor"); <- wyskakuje does not exist, czyli jakby nie była zadeklarowana, a konstruktor jest zrobiony
jakiej klasy identyfikator powinna mieć klasa dictionary, żeby można dodawać obiekty z każdej klasy, która dziedziczy z baza,wydawało mi się, że jeśli wszystkie są jakoś połączone z baza to właśnie to będzie dobry identyfikatorem
kod stojący za tym panelem
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 _1dwa3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj funkcję";
textBox3.Text = "Funkcja";
textBox2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj zdarzenie";
textBox3.Text = "Zdarzenie";
textBox2.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj ścieżkę procesu";
textBox3.Text = "Ścieżka procesu";
textBox2.Enabled = true;
}
private void button4_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj OR";
textBox3.Text = "OR";
textBox2.Enabled = false;
}
private void button5_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj AND";
textBox3.Text = "AND";
textBox2.Enabled = false;
}
private void button6_Click(object sender, EventArgs e)
{
button7.Visible = true;
button7.Text = "Dodaj XOR";
textBox3.Text = "XOR";
textBox2.Enabled = false;
}
private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
}
private void button7_Click(object sender, EventArgs e)
{
int i = 0;
if (i == 0) // obudowalem prymitywna petla bo chce zeby byla jedna lista a nie dziesiec dlatego wykona sie tylko przy pierwszym kliknieciu
{
Dictionary<int, baza> naszalista = new Dictionary<int, baza>();
i++;
} //tworzenie obiektu klasy
string aktufunktor = button7.Text; //przypisuje nazwe guzika do parametru dzięki czemy będziemy wiedzieli jaki obiekt ma powstac funkcj/xor/or/and
}
}
enum enotacja //narazie nie potrzebne
{
efunkcja = 1,
ezdarzenie = 2,
esciezkaprocesu = 3,
eor = 4,
eand = 5,
exor = 6,
}
public class baza // deklaracja klasy bazowje dla roznych elementow notacji
{
protected string rodzaj;
}
public class funckjazdarzenie :baza // narazie funkcja a zdarzenie nie roznia sie elementami jakie zawieraja( klasa sie zmieni jak bedziemy przedstawiac je graficznie
{
string opis;
string nazwa;
public funckjazdarzenie(string krodzaj, string knazwa, string kopis)
{
rodzaj = krodzaj;
nazwa = knazwa;
opis = kopis;
}
}
public class xor : baza //klasa odpowiedzialna za xora
{
public xor(string krodzaj)
{
rodzaj = krodzaj;
}
}
public class or : baza //klasa odpowiedzialna za ora
{
public or(string krodzaj, int knrid)
{
rodzaj = krodzaj;
}
}
public class and : baza // klasa odpowiedzialna za and
{
public and(string krodzaj, int knrid)
{
rodzaj = krodzaj;
}
}
public class Dictionary<int,baza>
{ // klasa która jest odpowiedzialna za liste musze podpiac pod nia jakis guzik ktory bedzie tworzyl obiekt i przsyzywal do zycia tabele
// public Dictionary<int,baza> listadzialan = new Dictionary<int,baza>();
public void dodaj(string guzik7) // narazie add zwykly pozniej sie go polaczy z obiektami ( prototyp dokoduje w odpowiednim czasie)
{
}
}
}
Każda uwaga będzie cenna sry za brak ą, ale a mi w lapku wysiadło.
Sry za ścianę tekstu, ale starałem się opisać od całego celu aplikacji do aktualnego problemu.
Pozdrawiam