C# eigene UserControls erstellen

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo Leute,
bin wieder mal komplett ratlos.

Ich wollte mich mal an die Controlerstellung wagen, habe auch einige Tutorials dazu gelesen, aber keins von denen funktioniert wie es soll!

Hab ein Tut von tutorials.de nachgemacht wo dieses Thema behandelt wurde, aber allem anschein nach scheint es nicht zu stimmen. Hier mal der Code:

Code:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;


namespace MyUserControl {
	class MyControl : UserControl {
		private TextBox txt1;
		private TextBox txt2;
		private Button btRechnen;
		private Label lblAusgabe;

		private int wert1 = 0;
		private int wert2 = 0;

		//Konstruktor
		public MyControl() {
			InitializeComponent();
		}

		void InitializeComponent() {
			this.txt1 = new System.Windows.Forms.TextBox();
			this.txt2 = new System.Windows.Forms.TextBox();
			this.btRechnen = new System.Windows.Forms.Button();
			this.lblAusgabe = new System.Windows.Forms.Label();
			this.SuspendLayout();
			// 
			// txt1
			// 
			this.txt1.Location = new Point(3, 3);
			this.txt1.Name = "txt1";
			this.txt1.Size = new System.Drawing.Size(100, 20);
			this.txt1.TabIndex = 0;
			// 
			// txt2
			// 
			this.txt2.Location = new System.Drawing.Point(109, 3);
			this.txt2.Name = "txt2";
			this.txt2.Size = new System.Drawing.Size(100, 20);
			this.txt2.TabIndex = 1;
			// 
			// btRechnen
			// 
			this.btRechnen.Location = new System.Drawing.Point(109, 29);
			this.btRechnen.Name = "btRechnen";
			this.btRechnen.Size = new System.Drawing.Size(100, 23);
			this.btRechnen.TabIndex = 2;
			this.btRechnen.Text = "Berechnen";
			this.btRechnen.UseVisualStyleBackColor = true;
			// 
			// lblAusgabe
			// 
			this.lblAusgabe.AutoSize = true;
			this.lblAusgabe.Location = new System.Drawing.Point(3, 34);
			this.lblAusgabe.Name = "lblAusgabe";
			this.lblAusgabe.Size = new System.Drawing.Size(35, 13);
			this.lblAusgabe.TabIndex = 3;
			this.lblAusgabe.Text = "label1";
			// 
			// MyControl
			// 
			this.Controls.Add(this.lblAusgabe);
			this.Controls.Add(this.btRechnen);
			this.Controls.Add(this.txt2);
			this.Controls.Add(this.txt1);
			this.Name = "MyControl";
			this.Size = new System.Drawing.Size(212, 55);
			this.ResumeLayout(false);
			this.PerformLayout();
		}

		public int Wert1 {
			get {
				return wert1;
			}
			set {
				if (value > 0) {
					wert1 = value;
				} else {
					wert1 = 0;
				}
			}
		}

		public int Wert2 {
			get {
				return wert2;
			}
			set {
				if (value > 0) {
					wert2 = value;
				} else {
					wert2 = 0;
				}
			}
		}

		private void Berechnen() {
			int ergebnis = 0;
			ergebnis = wert1 * wert2;
			this.lblAusgabe.Text = ergebnis.ToString();
		}

	}
}

Im Tut wurde gesagt, dass dieser Code nur noch als Dll Datei kompiliert werden soll und dann in allen Projekten verwendet werden kann, wenn ich in der Toolbox (benutze VS2010 Express) auf "Element auswählen..." klicke und dann die DLL auswähle.

Genau das funktioniert jedoch nicht. Bei mir kommt dann die Fehlermeldung:
"In [Pfad zur DLL] sind keine Komponenten vorhanden, die in der Toolbox positioniert werden können"

Kann mir da jemand weiterhelfen?


Bedanke mich schon mal im Vorraus
 
Probier mal ein "public" vor "class MyControl" zu setzen und versuch es erneut.
 
PERFEKT. VIELEN VIELEN DANK!!!

Hat super funktioniert. Wundert mich nur, dass es wirklich an so ner kleinigkeit lag ^^
Ergänzung ()

bzw.... wundern tuts mich nicht wirklich, war ja logisch wenn man drüber nachdenkt, aber es wäre mir patu nie im leben eingefallen glaub ich :D

danke nochmals ;-)
 
Mal so als Frage nebenbei: Welche Sichtbarkeit wird denn gesetzt, wenn man keine explizit angibt?
In Java wird ja automatisch package genommen.

Was passiert hier in C#? Wenn es analog funktioniert, müsste die Sichtbarkeit auf den Namespace beschränkt sein.
 
Zurück
Oben