Autor |
Beitrag |
pascalsv
      
Beiträge: 133
Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
|
Verfasst: Mi 10.09.08 09:14
Hallo zusammen,
ich habe ein Projekt mit einer Form, welches ich nun als dll (Addin für einen Report Designer) kapseln will. Die dll wird jedoch nicht vom Programm erkannt, solange die Form Bestandteil ist.
Ist das ein klassisches Verhalten der Dlls? Ein Workaround wäre dann doch die händische Codierung der Form, richtig?
Danke,
Pascal
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 10.09.08 09:28
Auch DLLs können selbstverständlich Forms enthalten. Welche Fehlermeldung erhälst du denn beim Einbinden der DLL?
|
|
pascalsv 
      
Beiträge: 133
Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
|
Verfasst: Mi 10.09.08 11:18
Es sieht danach aus, dass "Form" grundsätzlich nicht akzeptiert wird (das Programm wirft leider keinen Fehler sondern zeigt das Addin einfach nicht an).
Ich habe nun versucht, die Form manuell zur Laufzeit zu erzeugen. Leider erscheint diese Klasse mit einem Form-Symbol und daher geht es wieder nicht. Aber warum? Ich erzeuge doch alles händisch...
Hier meine "Form"-Klasse:
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:
| namespace cscConnector { public class BasicAuthForm : Form, ILoginForm { private TextBox txtServerUrl;
public BasicAuthForm(string server, string user, string error) { BasicAuthForm Form = new BasicAuthForm(server, user, error);
Form.Size = new System.Drawing.Size(270, 400); Form.Text = "Login";
txtServerUrl = new TextBox(); txtServerUrl.Location = new System.Drawing.Point(207, 14); txtServerUrl.Size = new System.Drawing.Size(229, 24); Form.Controls.Add(txtServerUrl);
...
Form.Show();
} |
Irgendwie erzeuge ich die Form doch zur Entwicklungszeit... Aber wieso? Was muss ich ändern, damit alles zur Laufzeut generiert wird?
Danke,
Pascal
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 10.09.08 11:42
Ich bin mir nicht ganz sicher, was du machen willst. Wie man mit einem Konstruktor arbeitet, sollte Dir das OPENBOOK VISUAL C# verraten.
Du rufst im Konstruktor der Form wieder den Konstruktor auf. Das heißt, der ruft sich immer wieder selber auf. Das ist klar, dass das knallt.
Du willst doch im Konstruktor sicherlich keine weitere Instanz erstellen (das ist ja gerade das, was der Konstruktor macht), sondern Du willst die Eigenschaften der neuen Instanz festlegen, oder? Wie das geht, sagt Dir auch das OpenBook 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
pascalsv 
      
Beiträge: 133
Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
|
Verfasst: Mi 10.09.08 12:45
Hast recht, habe ich übersehen.
Die vorherige Klasse mit der Form enthalten sieht so aus:
public partial class BasicAuthForm : Form, ILoginForm
Nun will ich diese Klasse missbrauchen, um diese Form zur Laufzeit zur erzeugen. Ich weiss jedoch nicht, wie ich eine solche Form erzeugen kann, da sie ja auch von ILoginForm abgeleitet werden muss.
Mit "Form authForm = new Form()" kann ich ja eine solche Form erzeugen, aber wie leite ich sie von ILoginForm ab??
Danke,
Pascal
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 10.09.08 13:50
Du hast doch schon eine Klasse, die von Form und ILoginForm ableitet. Von der kannst Du doch einfach eine Instanz erzeugen 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
pascalsv 
      
Beiträge: 133
Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
|
Verfasst: Mi 10.09.08 14:21
Hm, solange ich die Klasse vom Typ Form ableite, funzt das Addin nicht.
Wie löse ich das Problem, bitte? Muss ich die Form in Konstruktur erzeugen? Wie sähe das Coding aus?
Danke,
Pascal
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 10.09.08 14:24
Ich glaube, wir reden aneinander vorbei
Du hast die Klasse BasicAuthForm. Die leitet von Form ab und implementiert ILoginForm. Wenn Du eine Instanz von BasicAuthForm erstellst, sollte es doch das sein, was Du haben willst 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
pascalsv 
      
Beiträge: 133
Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
|
Verfasst: Mi 10.09.08 14:26
Leider nein.
Die Klasse selbst darf nicht vcon Form abgeleitet sein, sonst funktioniert das Addin nicht. Ich habe mir daher gedacht, in der Klasse eine neue Klasse zu erzeugen, die von Form und ILoginForm abgeleitet ist. Jedoch habe ich keine Idee, wie.
|
|