UserControl anzeigen

20/02/2010 - 08:05 von Fred Aurich | Report spam
Hallo,

ich habe eine (Anfànger)Frage.

Ich erstelle in C# eine Klassenbibliothek (Assembly-DLL), die ich in einer
anderen Programmiersprache "benutze". Dem C#

Projekt füge ich ein UserControl hinzu, auf dem ich ein visuelles Object
(Panel) habe. Ich lege Eigenschaften und

Methoden fest und kann (nach der Registrierung [regasm]) auch auf diese
Zugreifen.

Mein Problem ist nun folgendes: Wenn ich dem Projekt eine "Windows Form"
hinzufüge, kann ich über die Methode show(), in

meiner Programmiersprache das (externe) Form aufrufen/anzeigen. Da ich aber
ein UserControl auf dem Form m e i n e r

Anwendung benötige, habe ich dem C#-Projekt ein UserControl hinzugefügt.
Dieses wird nach dem laden aber nicht angezeigt.

Eine Methode Show() gibt es jetzt ja auch nicht. Deshalb meine Frage(n):

1. Wie kann ich das UserControll anzeigen?
2. Wie stelle ich eine Verbindung (übergebe das Handle meiner Form) zwischen
UserControl und meiner Form her (MutterForm

von UserControl = MeinForm)?

Fred

PS. Füge den (kurzen) Quellcode zur Hilfe mal an.

Zur Probe soll nur der Text einer Variable angezeigt werden.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;


namespace NET_dBase_Class
{
[ClassInterface(ClassInterfaceType.AutoDual)]

public partial class UserViewer : UserControl
{
string zDatei="";

public string GDatei
{
get { return zDatei; }
set { zDatei = value; }
}

public void setDateiName() {
Dateiname_setzen(zDatei);
}


public UserViewer()
{
InitializeComponent();
}

void Dateiname_setzen(string uzDateiName)
{
t_Datei.Text = uzDateiName;
}
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
20/02/2010 - 10:09 | Warnen spam
Hallo Fred,

ich habe eine (Anfànger)Frage.
Ich erstelle in C# eine Klassenbibliothek (Assembly-DLL),
die ich in einer anderen Programmiersprache "benutze".
[...] füge ich ein UserControl hinzu, auf dem ich ein visuelles Object
(Panel) habe. Ich lege Eigenschaften und
Methoden fest und kann (nach der Registrierung [regasm]) auch auf diese
Zugreifen.



ok, von der Anforderung her sehe ich da aber noch
keine Notwendigkeit über COM irgendwas zu registrieren.
Normal bindet man dann über Verweise die DLL ein.
Soll das Control global gemeinsam von mehreren benutzt
werden, so ist zwar oft eine Registrierung im Global Assembly Cache
sinnvoll, allerdings geht das dann nicht über COM, sondern
über .NET. Im einfachen Fall reichen Projektverweise und dann:

FredsControlLibrary.FredsUserControl fredsUserControl1 new FredsControlLibrary.FredsUserControl();
this.Controls.Add(this.fredsUserControl1); // vereinfacht

Oder, wenn Designer-Unterstützung in Deinem
Projekt vorhanden ist über Drag/Drop aus der
ToolBox in Deine Form, was dann im "*.Designer.cs" durch
VS automatisch àhnlichen Code erzeugt.
Damit wird es (normal) auch sichtbar.
Die Position ist vielfàltig über Location und Anchor-
Properties festlegbar.

[Entwickeln benutzerdefinierter Windows Forms-Steuerelemente mit .NET
Framework]
http://msdn.microsoft.com/de-de/lib...s6h2t.aspx


Eine Methode Show() gibt es jetzt ja auch nicht.



Die gibt es schon im Standard-Fall, wenn
das Control von UserControl abgeleitet ist.
Nur - die ist zur Anzeige als eigenen Dialog.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen