pobieranie danych z klasy do klasy

0

witam,
mam pytanie czy mógłby mi ktoś doradzić jak mam pobrać zawartość zmiennej str:

public void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
switch (CurrentTransmissionType)
{
case TransmissionType.Hex:
int bytes = comPort.BytesToRead;
byte[] comBuffer = new byte[bytes];
comPort.Read(comBuffer, 0, bytes);
DisplayData(MessageType.Incoming, ByteToHex(comBuffer) + "\n");
break;
default:
string str = comPort.ReadExisting();
DisplayData(MessageType.Incoming, str + "\n");
break;
}

        }
        #endregion

do innej klasy? Próbowałam dziedziczenia, ale ta klasa już dziedziczy po innej. Czytałam też na temat interfejsów, ale niestety nie udało mi się nic z tym zrobić. Może po prostu źle to interpretuję. Proszę o pomoc i wyrozumiałość:)

0

możesz użyć np. Properties, czyli do klasy dodajesz pole:

private string str;

oraz właściwość:

public string Str
{
   get { return this.str; }
   set { this.str = value; }
}

w swojej metodzie comPort_DataReceived zmieniasz instrukcję

string str = comPort.ReadExisting();
na
this.str = comPort.ReadExisting();

i teraz możesz wywołać NazwaObiektu.Str z innego obiektu

0

spróbuj tak (nie wiem czy to eleganckie, ale powinno pomóc)

public string publicStr;

public void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
switch (CurrentTransmissionType)
{
case TransmissionType.Hex:
int bytes = comPort.BytesToRead;
byte[] comBuffer = new byte[bytes];
comPort.Read(comBuffer, 0, bytes);
DisplayData(MessageType.Incoming, ByteToHex(comBuffer) + "\n");
break;
default:
str= comPort.ReadExisting();

publicStr = str;

DisplayData(MessageType.Incoming, str + "\n");
break;
}
}

innaKlasa
{
...
innyStr = publicStr;
...
}
0

już chyba działa, dzięki;)

0

Od czyli w Form1 masz klasę, naciskasz przycisk, otwiera się Form2, na Form2 uzupełniasz danymi klasę z Form1. Jak dobrze rozumiem. Nie ma nic skomplikowanego.

po pierwsze klasa z Form1 musi mieć publiczne pola, które to będziesz zmieniał za pomocą form2, czyli tam np.

public int LiczbaGodzik {get;set;}

nastepnie w Form1 wywołujesz Form2 w taki sposób.

Form1 f1 = new Form1(this);

trzeba również zmienić Form2

dodajesz w kodzie głównym np. nad metodą konstuktora

Form1 form1;

następnie zmieniasz konstuktor Form2 na :

        public Form2(Form1 form1)
        {
             this.form1 = form1;
            InitializeComponent();
        }

teraz już nie ma kłopotu. Tworzysz sobie jakąś metodę, która odwołuje się do klasy z Form1 w taki sposób :

form1.NazwaKlasy.NazwaPola
0

niby nie ale teraz problem z ciągiem danych przesyłanych przez comy, dowiedziałam się, że lepiej w listach zrobic ale to jutro będę walczyć

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