Autor Beitrag
c#ler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Di 09.08.11 16:09 
Hallo,
Ich habe in meiner Projektmappe 2 Projekte,
nun habe ich das eine Projekt, in der sich nicht die Form befindet als Startprojekt gesetzt.
Nun möchte ich gern wissen, wie ich aus einer klasse des einen Projekts, die Form des anderen Projekts aufrufen kann.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace Plugin.Fahrerbuch
{
    public class Fahrerbuch : BasePlugin
    {
        public Fahrerbuch()
            : base("Fahrerbuch Plugin""Fahrerbuch")
        {
        }

        public override void Initialize(IPluginManager pluginManager)
        {
        }
        
        protected override void MenuItemActivated()
        {
            //ShowDialog(Form_main());
            //Application.Run(new Form(Form_main));
        }
    }
    
}


So schaut es bis jetzt aus, aber leider funktioniert das so nicht.
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Di 09.08.11 16:12 
prinzipiell ist diese Variante verkehrt. nutze dein Formprojekt als Startprojekt und binde deine Klassenbibo oder was auch immer darin ein.

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Di 09.08.11 16:15 
user profile icondark-destination1988 hat folgendes geschrieben Zum zitierten Posting springen:
prinzipiell ist diese Variante verkehrt. nutze dein Formprojekt als Startprojekt und binde deine Klassenbibo oder was auch immer darin ein.


Vielen Dank für die schnelle Antwort, jedoch:
Das Aktuelle Startprojekt schreibt mein Form-Projekt als .dll
Es ist also nicht möglich das Formprojekt als Startprojekt zu nutzen, da meines Wissens nach erst die Umwandlung und dann der Aufruf erfolgen muss..

Die .dll widerum wird später in einer externen Application genutzt. (Plugin)
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 09.08.11 16:17 
Hallo c#ler,

du mußt zuerst einen Verweis (Referenz) auf das andere Projekt zu deinem Start-Projekt hinzufügen (Verweise -> Verweis hinzufügen...).
Und dann evtl. noch den Namensbereich im Code beachten (entweder per 'using' einbinden oder aber vor dem Form-Namen hinzufügen).
Nun kannst du einfach mit
ausblenden C#-Quelltext
1:
2:
OtherForm form = new OtherForm();
form.ShowDialog(this);

das andere Formular aufrufen.

Für diesen Beitrag haben gedankt: c#ler
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Di 09.08.11 16:19 
naja ok das was Th69 schreibt ist richtig, allerdings musst du die klasse finden die beim start aufgerufen wird
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Di 09.08.11 17:00 
Vielen Dank für die Antworten.
Ich werde mich mal damit auseinandersetzen.
Ich schreibe morgen mal, was bei rausgekommen ist.
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 10.08.11 14:00 
Wie erstelle ich einen Verweis korrekt?
Ich komme damit nicht klar.

Ich habe bei meinem Projekt einen Verweis hinzugefügt auf mein anderes Projekt.
Nun kann ich aber immernoch nicht wie gewünscht auf mein Formular zugreifen.
Wenn ich "Form1." eingebe, zeigt Autocomplete mir dann Controlfunktionen statt Formfunktionen..
Wie sage ich jetzt meiner Klasse, dass es auf eine Form zugreift?
Was mache ich falsch?

Wenn ich in meiner Klasse ein neues Formular erstelle
Form Form1 = new Form();
Form1.ShowDialog();
dann funktioniert das....jedoch wird mir jetzt natürlich nur das leere Formular angezeigt..
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 10.08.11 14:20 
Du musst den NamesSpace des Formulars mit angeben oder oben per using einbinden.
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 10.08.11 14:31 
user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Du musst den NamesSpace des Formulars mit angeben oder oben per using einbinden.

mach ich ja^^

dann kommt beim Aufruf:
Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Form.ShowDialog()" ist ein Objektverweis erforderlich.
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 10.08.11 14:52 
Sehe ich das richtig das deine Form-Klasse "Form1" heisst? Dann solltest du das auch als Typ hinschreiben und eine Instanz dieser Klasse erstellen. An dieser Instanz / diesem Objekt kannst du dann die Show-Funktion aufrufen.

Einfache Variablendeklaration -> Grundlagen.
ausblenden C#-Quelltext
1:
2:
3:
Typ variablenName;
int zähler;
Form1 meinFormObjekt;
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 10.08.11 15:12 
user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Sehe ich das richtig das deine Form-Klasse "Form1" heisst? Dann solltest du das auch als Typ hinschreiben und eine Instanz dieser Klasse erstellen. An dieser Instanz / diesem Objekt kannst du dann die Show-Funktion aufrufen.

Einfache Variablendeklaration -> Grundlagen.
ausblenden C#-Quelltext
1:
2:
3:
Typ variablenName;
int zähler;
Form1 meinFormObjekt;


Ich habe es wahrscheinlich etwas blöd beschrieben:

- Meine Formularklasse heißt Form1.cs
- In dieser haben ich eine public partial class Form_main : Form (ist von Form abgeleitet)
- in dieser befindet sich die Hauptfunktion public Form_main().

- Ich habe in meinem anderen Projekt (in der selben Projektmappe)
eine Klasse Fahrerbuch.cs
- In dieser Klasse soll der Aufruf des Form_main erfolgen. "Form_main.ShowDialog();"
Was muss ich tun, damit Ich auf Form_main zugreifen kann?

Ich habe bereits versucht eine Form2 zu erstellen
Form Form2 = new Form();
Form2.ShowDialog(this);

this verweist ja auf die Aktuelle Instanz der Klasse, aber ich glaube ich habe diese Instanz nicht richtig deklariert
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 10.08.11 15:22 
Wie die Datei heisst ist egal nur der Name der Klasse ist wichtig. (Wegen der Übersichtlichkeit sollte man aber die Datei genauso benennen wie die beinhaltete Klasse.)

Form_main ist also deine Klasse.
Zitat:
- in dieser befindet sich die Hauptfunktion public Form_main().

Das ist der Konstruktor, damit erstellst du ein Objekt der Klasse:
ausblenden C#-Quelltext
1:
Form_main meineVariable = new Form_main();					


und an diesem Objekt kannst du dann deine Funktion aufrufen
ausblenden C#-Quelltext
1:
meineVariable.ShowDialog();					


Ich empfehle dir mal ein Buch oder Tutorial über die Grundlagen der Objektorientierung zu lesen, damit du den Unterschied/Zusammenhang zwischen Klassen und Objekten verstehst.

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 10.08.11 15:37 
ach misst.
Vielen Dank. Fehler erkannt...ich Faste zur Zeit, da is meine Konzentration gering. Sorry, dass ich euch deswegen jetzt unnütz gestresst hab. Ich habe die ganze Zeit versucht ne neue Klasse zu erstellen, statt eine Variable, was natürlich unsinn ist.
Vielen Dank für die Hilfe und ein verschämtes bis bald :oops: