Laden...

[erledigt] VS bewegen Benutzersteuerelemente ohne kompilieren zu aktualisieren

Erstellt von zitat0r vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.179 Views
Z
zitat0r Themenstarter:in
24 Beiträge seit 2009
vor 14 Jahren
[erledigt] VS bewegen Benutzersteuerelemente ohne kompilieren zu aktualisieren

Hallo Leute,

ich möchte gerne etwas realisieren...

Undzwa habe ich ein Benutzersteuerelement.
In diesem Steuerelement sitzt ein DataGridView.
Dieses DataGridView bekommt duch die Eigenschaft Anzahl_Seiten seine Rows ( siehe Code ).

Jetzt im Form rufe ich das gute Stück auf und habe dann halt da ein DataGridView.
Dann setzte ich die Anzahl_Seiten auf eine beliebige Zahl.

So, jetzt kommts...

Erst wenn ich kompiliere (F5 oder F6) dann wird diese Zahl übernommen.

Wenn ich etwas am Benutzersteuerelement verändere, kommt ja immer diese Warnung:

Sie müssen das Projekt neu erstellen, damit die an Benutzercontroll_Seitenliste.Seitenplan vorgenommenen Änderungen in den geöffneten Designern angezeigt werden.

Kann man das irgendwie Umgehen? Ich möchte sozusagen eine Live-Vorschau der gerade gesetzten Eigenschaft haben.

Hier der versprochene Code:

Benutzercontroll_Seitenliste.cs


namespace Benutzercontroll_Seitenliste
{
	public partial class Seitenplan : UserControl
	{

		public Seitenplan()
		{
			InitializeComponent();
		}

		[Browsable(true)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
		public short Anzahl_Seiten
		{
			set;
			get;
		}

		private void Seitenplan_Load(object sender, EventArgs e)
		{
			dataGridView1.Rows.Add(Anzahl_Seiten);
		}
	}
}


Nicht sehr spannend...

Und dann lege ich im EigenschaftenFenster fest, das ich halt z. B. 12 Rows haben will. (Ich lad jetzt keine Screenshots hoch, weil darauf sieht man recht wenig...)

So, also wir haben das Benutzersteuerelement in der Form und haben 12 eingegeben. Jetzt ist im Designer (Entwurfansicht) ja halt nichts...

Da möchte ich, das da halt schon die eingegeben Rows drin sind, ohne das Programm zu kompilieren.

Hat jemand da einen Lösungsansatz? Eine Idee? Den einen Lösungsweg???

Ich bedanke mich fürs lesen und im vorraus schon für die Antworten.

Es grüßt
der zitat0r

173 Beiträge seit 2006
vor 14 Jahren

Hi,
wie man es in deinem Fall Realisiert weiß ich nicht, da ich bei meinen Controlls bisher immer die OnPaint(PaintEventArgs e) überschrieben habe.
Aber ich würde sagen das Controll merkt gar nicht, wann es eine Änderung gibt, da du diese nur im OnLoad setzt.

Versuch mal im OnPaint die Gesamtanzahl zu definieren, also nicht immer nur add sonst wirds immer Länger.

Gruß
Bonvie

Z
zitat0r Themenstarter:in
24 Beiträge seit 2009
vor 14 Jahren

mit der OnPaint funktioniert das schon ganz gut 😃

ich bedanke mich

3.511 Beiträge seit 2005
vor 14 Jahren

OnPaint ist dafür überhaupt nicht geeignet!

Der Designer weis ja gar nicht was er tun soll, wenn sich der Wert ändert. Du musst im Setter deiner Property "Anzahl_Seiten" natürlich dann im DGV die Anzahl Zeilen mit ändern.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

Z
zitat0r Themenstarter:in
24 Beiträge seit 2009
vor 14 Jahren

Der Designer weis ja gar nicht was er tun soll, wenn sich der Wert ändert. Du musst im Setter deiner Property "Anzahl_Seiten" natürlich dann im DGV die Anzahl Zeilen mit ändern.

naja, wenn ich das dann mache, bekomme ich aber ne fehlermeldung... und ich hab ja immerhin noch nicht so ganz so viel ahung 😃

also ist meine aufgabe erfüllt, wenn ich das onPaint Event verwende, und ich hab dann eine Vorschau darauf, was kommt...

Doch jetzt hab ich gerade ein anderes Problem, undzwa das mein Visual Studio einfach nicht weiter laufen will 😃 Ich mach an und dann geht gar nichts mehr...

bis auf dann!
der zitat0r grüßt!

5.299 Beiträge seit 2008
vor 14 Jahren

Wenn ich etwas am Benutzersteuerelement verändere, kommt ja immer diese Warnung:

Sie müssen das Projekt neu erstellen, damit die an Benutzercontroll_Seitenliste.Seitenplan vorgenommenen Änderungen in den geöffneten Designern angezeigt werden.

Kann man das irgendwie Umgehen? Ich möchte sozusagen eine Live-Vorschau der gerade gesetzten Eigenschaft haben.

Die Meldung sagt halt die nackte Wahrheit, da kannste nix umgehen.

Wenn im Form-Designer ein Usercontrol verwendet wird, holterdas aus der entsprechenden Dll.
Wenn du den SourceCode dieser Dll änderst, indemde am UserControl-Source rumfummelst, muss logisch neu kompiliert werden, damit die Dll auffm aktuellen Stand ist.

Ansonsten vlt



   public partial class Seitenplan : UserControl {
      public Seitenplan() {
         InitializeComponent();
      }

      [Browsable(true)]
      [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
      public int Anzahl_Seiten {
         get { return dataGridView1.RowCount; }
         set { dataGridView1.RowCount = value; }
      }

   }

Der frühe Apfel fängt den Wurm.