Har legat och traglat i eftermiddag. Du måste ha referensen till objektet av Form1, Form1 är bara en klass som du kan skapa ett objekt utav. Menar du någonting i stil med Det är så här. Felet ligger förmodligen i att Combox14 är deklarerad som protected eller private. Tyvärr. du måste ha en referens till instansen av Form1... det kan du ju skicka med när du skapar en ny form3... >du måste ha en referens till instansen av Form1... det kan du ju skicka med när du >skapar en ny form3... Skriv en ny konstruktor i Form3 som tar en textsträng som inparameter, alt en metod som anropas före Form3.Show() som i sin tu har en String som inparameter.. Denna textsträng är innehållet du valt i comboboxen. Vips så har du tillgång till det data du vill ha. Glöm det där med referenser, det suger + att det lätt kan bli rörigt. Använd det bara när du måste. Jag lyckades på ett mysko sätt.Hämta ifrån uppgifter ifrån Form1
I Form1 så har jag en comboBox14 som letar reda på vilka rapporter det finns i en viss katalog.
I Form3 så vill jag peka på comboBox14.text, men jag får bara error.
<code>
oRpt = new ReportDocument();
DirectoryInfo di = new DirectoryInfo(System.IO.Path.Combine(Application.StartupPath,"Rapport"));
crystalReportViewer1.ReportSource=(di + "\\" + Form1.comboBox14.text);
</code>
Error:
<code>
E:\SAW_Registrering\SAW_Registrering\Form3.cs(99): 'SAW_Registrering.Form1.comboBox14' is inaccessible due to its protection level
</code>
Visst skall jag väll kunna hämta uppgifterna ifrån Form1?Sv: Hämta ifrån uppgifter ifrån Form1
Sv: Hämta ifrån uppgifter ifrån Form1
<code>
Form Form1 = new Form1;
</code>
Eller menar du att jag skall lägga till "using Form1"?
Annars så tror jag inte att jag förstår dig?Sv: Hämta ifrån uppgifter ifrån Form1
I form ett så finns comboBox14. När jag klickar på en knapp, så öppnas Form3 där jag har en crystalReportViewer1.ReportSource.
Informationen ifrån comboBox14 skall crystalReportViewer1.ReportSource ha.
Form1 ligger alltså fortfarande öppen.Sv: Hämta ifrån uppgifter ifrån Form1
Jag hade nog istället gjort nån public metod typ GetReportSource och i den returnerat comboBox14.Text... så blir det iallafall lite mer objektorienterat och ingen "vb-programmering" ;-)
alltså
i Form1
<code>
public string GetReportSource()
{
return comboBox14.Text;
}
</code>
från Form3 gör du typ
crystalReportViewer1.ReportSource=Form1.GetReportSource();
Jag tror att det är nåt sånt du skall satsa på... även om det kan göras "snyggare"Sv: Hämta ifrån uppgifter ifrån Form1
<code>
DirectoryInfo di = new DirectoryInfo(System.IO.Path.Combine(Application.StartupPath,"Rapport"));
crystalReportViewer1.ReportSource=(di + "\\" + Form1.GetReportSource());
</code>
Denna ligger i Form3, den andra la jag in i Form1, men jag kan inte se den (det gör man ju normalt när man skriver Form1.)
Jag får också fel
<code>
E:\SAW_Registrering\SAW_Registrering\Form3.cs(98): An object reference is required for the nonstatic field, method, or property 'SAW_Registrering.Form1.GetReportSource()'
</code>
Några förslag?Sv: Hämta ifrån uppgifter ifrån Form1
annars kan du ju försöka lägga mindre logik i själva formulären och försöka lägga det i ett lager under. Så att du slipper hålla på och "prata" med grafiska komponenter på andra formulär och sånt... om du fattar vad jag menar.
Här skulle du ju kunna t.ex. ha nån rapport klass som hämtar alla pather. Dessa visar du sedan på Form1. Sen kanske den har nån property selectedpath som du sätter när användaren väljer i comboboxen. Sen i form3 "pratar" du inte med form1 utan med din rapport klass som skall innehålla allt du kan behöva. På det sättet blir du inte beroende av hur det grafiska gränsnittet ser ut utan kan lätt byta ut eller uppdater...
Lite idéer...Sv: Hämta ifrån uppgifter ifrån Form1
Jag antar att du menar...
<code>
Form3 minForm3= new Form3();
minForm3.Show();
</code>
.. men hur skall jag kunna skicka med någonting här? (jag försökte i parentesen men det...)
Ditt andra resonemang förstod jag tyvärr inte.
Skall det vara så förb-t svårt att ifrån Form3 kunna läsa av vad det står i Form1.comboBox14 ?
Jag vet att jag har ett annat alenativ, flytta upp comboBoxen i Form3, men det vill jag helst inte göra.Sv: Hämta ifrån uppgifter ifrån Form1
//FreddeSv: Hämta ifrån uppgifter ifrån Form1
Jag gjorde först en public variabel. Sen när jag trycker på knappen i form ett, så såg jag till att form1.text var lika med textBox14.text.
Sen kunde jag hitta värdet, genom att lägga till samma variabel i Form3.
Tack för all hjälp