Laden...

Forenbeiträge von schnecke Ingesamt 223 Beiträge

01.02.2007 - 12:11 Uhr

Hi,

nach langer C# Pause muss ich nun mal wieder ein kleines Projekt machen.

Ich möchte die Registry auslesen... lokal ist das über

Registry.LocalMachine.OpenSubKey(...);

auch kein Problem - aber wie mache ich das für x-beliebige Rechner im Netzwerk, von denen ich auch nur den Namen (also (noch) nicht die IP) habe? Wahrscheinlich über WMI oder so... aber weil ich nun ne gewisse Zeit aus C# raus bin, will es mir nicht einfallen... vllt jemand n Schnipsel oder Ideen? Habe leider nur diesen Thread hier gefunden: Weis jemand wie ich über wmi (oder C#) auf andere Registry zugreife aber der war nun nicht soooo befriedigend...

Admin-Passwort bzw. Domänen-Admin habe ich für die Zugriffe - also keine Sicherheitsfragen an dieser Stelle 😉

Vielen Dank für alle Antworten...

31.01.2006 - 09:48 Uhr

Hallo,

ich wusste nicht ob meine Frage zu Forms oder Grafik gehört, deshalb stelle ich sie mal hier - kann aber gerne verschoben werden.

Also ich habe eine Form, in der eine PictureBox liegt mit der gleichen Größe. Die PictrueBox beinhaltet natürlich ein Bild, auf dem ich zeichnen. Nun habe ich noch eine Export-Funktion, die das Bild speichert... das mache ich so:

myPictureBox.Image.Save(sfd.FileName,ImageFormat.Jpeg);

So... dann kann man noch über ein paar Buttons Label der PictureBox hinzufügen:

Label label = new Label();
label.Text = "blabla";
this.picBox.Controls.Add(label);

Soweit, so gut... nun möchte ich aber gerne, dass beim Export ins Bild (oder auch beim Drucken z.B.) die Label-Texte mitgenommen werden.

Meine Idee wäre, die Labels in eine Liste zu schmeißen und in OnPaint jeden Label-Text per DrawString auszugeben. Das finde ich aber daher doof, dass man die Labels auch noch verschieben kann... und dann ist das eher schlecht... und außerdem gibt es doch da bestimmt eine bessere Methode...

Bestimmt fragt ihr euch, warum ich Labels nehme und nicht gleich DrawString ... das rührt daher, dass ich die Labels (oder halt den Text an sich) verschieben muss... und ich habe keine Möglichkeit gefunden, einen DrawString zu verschieben.

Soderle.... also für Ideen bin ich offen 🙂

Merci ihr Lieben und Grüße,
die Schnecke! =)

29.01.2006 - 15:57 Uhr

Was meinst du mit Diskussion zum Project?! 🤔

27.01.2006 - 14:23 Uhr

Na da antworte ich mir doch mal wieder selber 🙂

Ich habe mir jetzt eine Linien-Klasse gebaut, die Start- und Endpunkt hat sowie einen Beschreibungs-String...und wenn ich dann im Paint() alle Linien zeichne, mache ich einfach ein DrawString(myLine.Info, ...) mit ... =)

Hey, das war ja doch ganz einfach 8)

27.01.2006 - 13:48 Uhr

Danke für die Tipps... so in der Art habe ich auch schon gedacht...

Aber habe nun diese Seite gefunden: http://www.codeproject.com/csharp/lineditor.asp#xx1055999xx

da ist schon so ziemlich das, was ich will....

ABER 😉
Wir wäre es möglich, zu der Linie noch eine Beschreibung hinzuzufügen? z.B. per DrawString.... ?!

27.01.2006 - 11:19 Uhr

Habe es doch noch hinbekommen; hier der Code:


if( saveFileDialog.ShowDialog() == DialogResult.OK )
{
	FileInfo fileInfo = new FileInfo(saveFileDialog.FileName);
	StreamWriter sw = fileInfo.CreateText();
    // ...
    sw.Write(myDate);
    sw.Close();
}

27.01.2006 - 11:16 Uhr

Hey,

ich zeichne Linien mit DrawLine und würde gerne, dass man die Enden der Linien mit der Maus verschieben (= bewegen) kann. So das der User selber wählen kann, ob die Linien senkrecht, vertikal oder diagonal läuft (da er sie je verschieben kann). Ich weiß aber momentan keinen rechten Ansatz dafür um ...

a) einen MouseEvent an den Linienenden zu bekommen
b) Die Enden zu verschieben (vll. im Paint-Ereignis einfach die x bzw. y-Koordinaten an die der Maus anpassen...)
c) ....überhaupt alles...

Schön wäre es auch, wenn man die Linien größer und kleiner machen könnte... mhhh.... also wenn jemand eine Idee hat... her damit 🙂

Grüße!

27.01.2006 - 10:15 Uhr

Hallo zusammen,

ich habe einen SaveFileDialog der über n Filter Dateien des Typs ".adr" anzeigt. Nun möchte ich eine neue Datei speichern, quasi also ein "Save As...". Das geht aber nie, ich kann immer nur bestehende Dateien überschreiben.

Beispiel: ich öffne den SaveFileDialog und sehe im Order C:\Temp diese Dateien:

  • test1.adr
  • test2.adr
  • test3.adr

Nun möchte ich eine neue Datei "test4.adr" anlegen - bekomme aber immer beim klick auf "speichern" die Meldung "test4.adr konnte nicht gefunden werden" ... hmmm? Muss ich die Datei vorher noch anlegen oder wie? Und wenn ja - wie mache ich das?!

Verstehe das gerade nicht so.....?!

11.01.2006 - 13:14 Uhr

Original von Qt21580
Mit GetPixel() bekomme ich zwar unterschiedliche Werte

... aber damit hast du doch schon quasi dein Ergebnis... fu vergleichst einfach beide Pixel-Werte (R,G,B) und wenn z.B. der B-Wert bei dem einem Bild höher ist als bei dem anderen dann weißt du doch, dass es dort "blauer" ist... und mit ein paar Berechnungen kannst du auch feststellen, ob es so und so viel Graustufen mehr sind etc.
Und wenn beide Pixel-Werte gleich sind, dann ist auch das Bild gleich... ganz easy 🙂

... oder was genau willst du jetzt vom PC ausgespuckt haben als Ergebnis?! 🤔

11.01.2006 - 13:07 Uhr

Original von Lynix
.... eben mit einer Abfrage auf null. Das sollte man grundsätzlich bei allen Events so machen.

Oh... das war mir so nicht bewusst.... bzw. habe ich nicht drüber nachgedacht... und bisher hat klopf auf holz das alles immer so funktioniert.... aber eigentlich ist es ja logisch, dass man auf null prüfen sollte.... 😭

Also vielen Dank für eure Tipps, waren wie immer sehr hilfreich.... und ich habe auch wieder was wichtiges dazu gelernt =)

Und mit dem -= geht jetzt auch wunderbar das (oder heißt es "der") Delegate wieder weg... 🙂

09.01.2006 - 17:17 Uhr

Original von IgG

  
myClass.OverImageDelegate d=new new myClass.OverImageDelegate(OverImage);  
myObject.OverImage += d;  
myObject.OverImage -= d;  
  

Aber das += new ... ist in einer anderen Klasse und wird zu einem früheren Zeitpunkt angewandt. Erst im späteren Verlauf des Programms kommt es zu Zuständen, wo sich das Objekt ändert und dann nicht mehr auf das Event reagieren soll....vorher aber schon.

Einfach gesagt: bei Programmstart kann auf alle Bilder in einem Panel ein MouseOver gemacht werden, wird eine Aktion mit einem bestimmten Bild durchgeführt (sagen wir mal n Button gedrückt), dann soll das Bild nicht mehr auf den MouseOver-Event reagieren... ich glaube ich mache es komplizierter als es ist.... X(

09.01.2006 - 17:10 Uhr

Danke für die schnelle Antwort 🙂

Aber irgendwie klappt das so:

myObject.OverImage -= new myClass.OverImageDelegate(OverImage);  

nicht...
edit: mit "nicht klappen" meine ich, dass ich dann eine System.Null Exception bekomme, wenn ich den früher vorhandenen Event wieder auslöse... is ja eigentlich auch klar, dass er null ist, denn er ist ja weg... aber das Event wird trotzdem noch ausgelöst... soll es aber nicht... 🙁

... oder habe ich das jetzt missverstanden?! 🤔

09.01.2006 - 17:03 Uhr

Hallo,

hier mein Code:


myObject.OverImage += new myClass.OverImageDelegate(OverImage);

... ich hoffe, das war jetzt verständlich... nun möchte ich von myObject das Delegate OverImage wieder entfernen... also quasi das hier machen:


myObject.Remove(OverImage);

... geht so natürlich nicht, aber damit wisst ihr, was ich möchte... also was habe ich zu tun?!

Danke schon mal =)

12.12.2005 - 11:10 Uhr

Hi zusammen...

ich beschäftige mich gerade mit Sockets...worin ich auch recht neu bin... vielleicht kommen auch daher meine Probs... aber naja, ich kann mir halt nicht helfen und nach n paar Stunden googlen und testen bin ich mit meinem Latein am Ende. 🙁

Ich möchte per UDP ein Broadcast machen und mir alle NICs, die antworten, anzeigen lassen (also die IP der antwortenden Stellen). Doch das klappt nicht wirklich... mein Code bisher:


IPEndPoint ip= new IPEndPoint( IPAddress.Parse( "192.168.1.255"), 24105); 
Socket socket= new Socket( ip.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp); 			
socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); 
			
byte[] message= System.Text.Encoding.ASCII.GetBytes( "testnachricht"); 
socket.SendTo( message, message.Length, SocketFlags.None, ip); 

socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000); 
IPEndPoint sender= new IPEndPoint(IPAddress.Any, 0); 
EndPoint remoteEP= (EndPoint)sender; 
byte[] buffer= new byte[1024]; 			 
try 
{ 
	int empfangen = socket.ReceiveFrom( buffer, buffer.Length, SocketFlags.None, ref remoteEP); 
	Debug.Write("Empfangen: " + empfangen.ToString() );
	sender= (IPEndPoint)remoteEP; 
	Debug.Write( "IP:" + sender.Address.ToString() ); 
} 
catch (Exception e) 
{ 				
	Debug.WriteLine( e.ToString()); 			
} 
socket.Close();			

Ich bekomme immer ein TimeOut... und ich weiß nicht, ob ich generell was falsch mache... oder woran es sonst liegt. Oder muss ich zum Senden und Empfangen zwei verschiedene Sockets benutzen? 🤔

21.11.2005 - 14:56 Uhr

(antworte mir mal selber) 8)

Ich glaub, ich werde verrückt... das hier:

prnPrevDlg.PrintPreviewControl.Zoom = 1.0;

geht.... wird nur nicht von Visual Studio als autom. Codevervollständigung angeboten... und das hatte mich iritiert... aber compilieren und ausführen tut er es... strange... weiß jemand, warum es nicht per AutoComplete geht?!

21.11.2005 - 14:39 Uhr

Ja... hallo erstmal... 😉

Ich möchte in einem PrintPreviewDialog den Zoom-Faktor auf 100% stellen, per default ist der immer auf "Automatisch" gestellt... wie stelle ich das an? Ich habe diesen code hier über Google gefunden:


previewDialog.PrintPreviewControl.StartPage = 0;
previewDialog.PrintPreviewControl.Zoom = 1.0;     
previewDialog.PrintPreviewControl.Columns = 2;

... aber ich kann von meinem PrintPreviewDialog aus nicht PrintPreviewControl aufrufen, bzw. ansprechen... oder bin ich nur zu blöd?!

Also wenn jemand nen schnellen Weg weiß, dann her damit... wenn es nur über ein eigenes Control geht (abgeleitet von PrintPreviewDialog), dann lasst es mich wissen (obwohl mein gesunder Menschenverstand sich fragt, wieso ich keine Eigenschaft "Zoom" finden und einstellen kann).... =)

09.11.2005 - 09:02 Uhr

Wie kann ich auch einfache Weise die Anzahl der übergeordneten Knoten eines TreeView-Knotens ermitteln?

z.B. dieser Tree mit der Anzahl der Nodes dahinter:


Node0              - 0 Parent
   - Child0        - 1 Parent
   - Child1        - 1 Parent
   - Child2        - 1 Parent
Node1              - 0 Parent
   - Child0        - 1 Parent
   - Child1        - 1 Parent
      - Child0     - 2 Parent
      - Child1     - 2 Parent
Node2              - 0 Parent
   - Child0        - 1 Parent
      - Child0     - 2 Parent
         - Child0  - 3 Parent
         - Child1  - 3 Parent

Ich will natürlich immer die Parent-Anzahl haben.

08.11.2005 - 11:09 Uhr

Hmm... also eigentlich braucht man das Rad ja nicht neu erfinden... wenn du rein den Traffic begrenzen willst, dann kannst du viele fertige Tools nutzen, z.B.das hier: http://www.netlimiter.com/

... nur mal so als Idee... 🙂

08.11.2005 - 10:51 Uhr

Die Bandbreite kann man IMHO nur an den Interfaces eines Netzwerkknotens selber einstellten... sprich, wenn du auf den Router willst, dann musst du dort die Netzwerk-Interfaces konfigurieren. Da dies meist über eine eigene, proprietäre Herstellersoftware funktioniert würde ich jetzt erstmal sagen, dass es schlecht aussieht.
Was für einen Router hast du denn?! Wenn du ihn über Telnet o.ä. steuern kannst, dann könnte ich mir das schon eher vorstellen (z.B. Befehle für die NIC an den Router schicken).

08.11.2005 - 10:45 Uhr

Herje, jetzt habe ich des Rätsels Lösung... Petzold sei Dank... nach Durcharbeiten des ganzen Kapitels über Bildläufe ist mir klar, warum es nicht geht: Der Bildlaufbereich basiert auf Position und Größe der Steuerelemente im Clientbereich. Wenn keine Steuerelemente im Clientbereich vorhanden sind, wird der Bildlaufbereich auf (0,0) gesetzt. Also habe ich die Festlegung der Werte für meine Scrollbar nun erst dann gemacht, nachdem Komponenten auf meinen Panel gelandet sind - und nicht davor. So habe ich meinen Code nun auf folgende kleine Änderung angepasst:


// ERST dem Panel Komponenten hinzufügen
MyCustomPanel panelNew = (MyCustomPanel)myPanels[1];
panelNew.Visible = true;
this.panel.Controls.Add(panelNew); 

// Und DANN die AutoScrollPosition festlegen:
this.panel.AutoScrollPosition = new Point(1000,500);

Man... so einfach... wenn mans weiß... =) 8o 😁

08.11.2005 - 10:15 Uhr

Dieser Code hier:


Point p = this.panel.AutoScrollPosition;
p.X = 1000;
p.Y = 500;
this.panel.AutoScrollPosition = p;

MyCustomPanel panelNew = (MyCustomPanel)myPanels[1];
panelNew.Visible = true;
this.panel.Controls.Add(panelNew);

... ändert nicht die ScrollPosition meines Panels... aber warum?!

Der Debugger zeigt das hier (siehe Bild):
AutoScrollPosition ist (0,0) aber scrollPosition ist richtig (1000,500)... warum springt der Schiber der Scrollbalken da nicht hin?! Er bleibt einfach auf (0,0)... das kann doch nicht so schwer sein

08.11.2005 - 09:10 Uhr

Original von dying_fetus
Habe schon nachgegrast und Methoden wie PrintPage, PrintDocument etc. gefunden, ist aber alles irgendwie unbrauchbar.

Naja, ohne PrintPage-Event und PrintDocument wirst du nicht viel drucken können.... das brauchst du nun mal zum Drucken, ob du es schön findest oder nicht.

Da du Daten aus der DB holst und anzeigst, nehme ich an, dass du irgendwo in deinem Code deine Daten in nem DataSet oder eine DataTable hälst... und der Inhalt dieser Komponenten lässt sich recht einfach auf eine Seite bringen und ausdrucken. Beispiele zum Drucken gibt es in der MSDN... und dann änderst du das Beispiel einfach so ab, dass deine DataRows gedruckt werden. Du kannst dir z.B. eine Klasse "Printer" schreiben, der du deine zu druckenden Rows übergibst, dann einfach OnPrintPage überschreiben und so anpassen, dass deine Rows gedruckt werden... z.B. so:


// Um z.B. die Spaltennamen zu drucken:
for(int i = 0; i < myDataTable.Columns.Count; i++)
{							
	grfx.DrawString(myDataTable.Columns[i].ToString(), myFont, Brushes.Black, xVal, yVal);		
}	
// Nun noch durch die Rows wandern und deren Werte poer DrawString ausdrucken... fertig :)

08.11.2005 - 09:01 Uhr

Size-Wert der PictureBoxen sind 30x30 (es sind mehrere, die zu einem großen Bild gehören) und Size des Panels ist 1500x1000. Die PictureBoxen sind auf dem Panel. Dann zeichne ich noch auf dem Panel eine Bitmap, die 3000x1500 groß ist, deshalb hat das Panel auch Scrollbars.

07.11.2005 - 17:43 Uhr

Also der Debugger bestätigt, dass die Scrollbars dem Panel gehören.

07.11.2005 - 15:01 Uhr

Original von Programmierhans
Hast Du Panel.AutoScroll auf true

ja.

Original von Programmierhans
ist das Control auf dem Panel grösser als das Panel ?

ja... habe da ein Bild drauf, dass größer ist als das Panel. Das Panel hat auch Scrollbars. 🙁

07.11.2005 - 14:51 Uhr

Ja, er läuft schon per WMI 🙂... ich wollte nur ne andere Möglichkeit haben für das OS, denn eine WMI-Anfrage auf einem Linux-Server verläuft natürlich ins Leere...

... und die installierten Programme kann ich mir per WMI nicht anzeigen lassen, zumindest habe ich dafür keine Auslese-Funktion gefunden...

07.11.2005 - 14:48 Uhr

Also ich habe irgendwie schon wieder Probs mit dem Scrollen, dieses Mal in einem Panel... ich glaube, ich bin da zu blöde für X(...hier mein Code:


Point foundPos = new Point(0,0);
//...

if(valueFound)
{
   foundPos.X = 1000;
   foundPos.Y = 500;
}

panel.AutoScrollPosition = foundPos;
				
MessageBox.Show(foundPos.ToString() );
MessageBox.Show(panel.AutoScrollPosition.ToString() );

Ich bekomme als Ausgabe:

(x=1000,y=500)

und

(x=0,y=0)

... hähhh?!?! 🤔

07.11.2005 - 12:57 Uhr

Application.Exit() beendet doch das ganze Programm inkl. aller Unterfenster... oder habe ich da jetzt was nicht verstanden...?!

07.11.2005 - 12:54 Uhr

Was meinst du mit rundll-Befehlen?!
Und wie kann ich das auf einem Remoterechner ausführen?!

07.11.2005 - 10:24 Uhr

Original von norman_timo
"appwiz.cpl"

Ja, der Aufruf ist schon mal gut 🙂
Aber das startet ja die Ansicht für die Software-Übersicht... ich hätte am Liebsten einfach nur eine Textausgabe, also kein ganzes Fenster... sondern sowas wie:

string[] installedPrograms = GetProgrames("192.168.1.1");

... das ist natürlich Wunschdenken, denn ich könnte mir nicht vorstellen, dass es möglich ist, einfach so ein Programm auf einem Remoterechner zu starten... ich könnte den ganzen Rechner ja sonst hacken... 😉
Man könnte bestimmt auf einem Server einen Thread laufenlassen, der Client-Anfragen entgegegennimmt - aber ich habe keinen Server zur Verfügung... 🙁

07.11.2005 - 09:36 Uhr

Hallo... ich nochmal 🙂

Also das mit den Systeminfos läuft soweit, der Link von Programmierhans war gold wert... einfach DLL einbinden, die man auf der Seite runterladen kann und schon geht's los. 🙂

Aber nun noch was anderes dazu: Kann ich auch irgendwie feststellen, welche Programme auf einem Remoterechner installiert sind?! Alle installierten Programme stehen ja in dieser schönen Software-Liste in der Systemsteuerung... kommt man da irgendwie ran? Oder über die Registry?! 🤔

04.11.2005 - 10:20 Uhr

Ah danke... du hast mich wieder mal gerettet! =)

Der Tipp mit der Schriftart war der richtige... ich habe beim Füllen der Nodes teilweise eine andere Schriftart verwendet. Wenn ich meinem TreeView nun direkt vor dem Füllen der Nodes diese andere Schriftart zuweise, dann kann ich alles lesen und es wird nichts mehr beschnitten 🙂

... wäre ich aber nie drauf gekommen! Also tausend Dank! 👍

04.11.2005 - 09:50 Uhr

Ich habe mal wieder ein sehr merkwürdiges Phänomen:

Ich führe folgenden Code aus:


treeView.Nodes[i].Nodes[0].Nodes.Add("Max Mustermann");
treeView.Nodes[i].Nodes[0].Nodes.Add("Uschi Musterfrau");
treeView.Nodes[i].Nodes[0].Nodes.Add("Hans Hugo");
treeView.Nodes[i].Nodes[0].Nodes.Add("Bla");
treeView.Nodes[i].Nodes[0].Nodes.Add("Blaaaaaaaaaaaaaaaaaaaaa");
treeView.Nodes[i].Nodes[0].Nodes.Add("Hund");

Und bekomme in meiner Forms im TreeView als Ausgabe (also der Text auf den Nodes):

Max Musterma
Uschi Muste
Hans Hugo
Bla
Blaaaaaaaaaaaaaaa
Hu

Der Text wird also irgendwie abgeschnitten... ich weiß aber nicht warum?!?! Und das Abschneiden ist quasi willkürlich, also nicht nach Zeichen X, sondern mal nach dem 3. mal nach dem 10. ... ?!?!

03.11.2005 - 17:12 Uhr

Ok... is jetzt n Anhang... schwere Geburt...

Jetzt muss ich nur noch hoffen dass sich
a) das jemand anguckt und
b) auch helfen kann 🙂

Vielen Dank im Voraus =)

[edit] ohhh... wird so direkt eingebunden (das Bild)... suuupper 🙂

03.11.2005 - 16:52 Uhr

Ohh... danke... jetzt weiß ich Bescheid... 🙂
Aber da kann ich ja nur ein http-Pfad angeben zu nem Bild.... ich habe es aber nirgends auf irgendeinem Webspace liegen.... 🙁

03.11.2005 - 16:22 Uhr

Wo hast du "Hyperlink einfügen"??? 8o

03.11.2005 - 16:02 Uhr

Bei mir flackert es auch gerade in einem Panel... habe das SetStyle wie #coder geschrieben hat, habe eine eigene Panel-Klasse, die von Panel erbt und eine eigene Paint-Methode in der ich male:


protected override void OnPaint(PaintEventArgs e)
{	
	base.OnPaintBackground(e);
	Draw(e.Graphics);
}

In Draw() wird dann halt alles gemalt... Linien etc. Und bei den Linien hapert es... die sind nicht gerade, sondern in wilden Bögen übern Bildschirm verteilt als kleine "Konfetti-Schnipsel".... aber ich weiß beim Besten Willen nicht, warum...

Ich habe davon einen Screenshot gemacht... aber wie kann ich hier Bilder einbinden, wenn ich keinen Webspace habe?! 🤔

03.11.2005 - 14:21 Uhr

Na gut, dann packe ich das jetzt zu "merken und dran denken, wenns das nächste mal nicht geht" 🙂

03.11.2005 - 13:52 Uhr

Original von herbivore
panelNew.BringToFront();

... das war es, Danke, Herbivore 🙂

Kannst du mir vll. auch noch sagen, warum... weil mir nicht einleuchtet, warum mein Code nicht ausreichend war... und so lerne ich vll. was für die Zukunft, wenn ich auch weiß, warum das so nicht ging, wie ich mir das gedacht habe.

Vielen Dank für die kompetente Hilfe! 👍 =)

ps@sheitmann: das mit visible = true/false hatte ich erst gedacht, aber an Hand der vielen Verschachtelungen und Funktionen, die im Hintergrund laufen, nur schlecht/unschön umsetzbar. Aber auch dir danke für die Idee 🙂

03.11.2005 - 12:18 Uhr

Wenn der Remote-Rechner in einer Domäne ist... wieso kann ich mich dann nicht als lokaler Admin anmelden? Wenn ich die WMI-Funktionen anspreche, MUSS ich Domänen-Admin sein.... aber die Begründung leuchtet mir nicht so ganz ein, also warum es nicht auch ein lokaler Admin "tut"... weiß jemand eine Erklärung über diese Sicherheitslogik?!

03.11.2005 - 10:30 Uhr

Hallo,

irgendwie kann ich nix zum dem Thema finden, aber vielleicht suche ich auch unter den falschen Begriffen...?!

Es geht um Folgendes: ich habe eine Form, wo links ein Tree ist und rechts ein Panel. Diese Panel ist bei Programmstart noch leer, also quasi mit System-ActiveBorder - Farbe gefüllt und zeigt nichts an. Nachdem man einen Button gedrückt hat, werden verschiedene Funktionen ausgelöst und dynamisch Panels erzeugt. Diese werden in einer ArrayList gespeichert, also eine Panel-ArrayList. Das klappt auch soweit. Nur an dem anzeigen des Panels hapert es... ich habe in der ToolBar ein DropDownMenu mit 5 Einträgen, jeder Eintrag soll ein eigenes Panel aufrufen. Doch jedes Mal, wenn ich eins auswähle, wird dieses nicht angezeigt... es wird nur das "alte" (also das noch vom Programmstart leere) Panel entfernt...

Mein nicht-gehender Code 🙂


// das "alte", leere Panel heißt "panel"
// die Arraylist mit den Panels heißt "myPanels"... :

this.panel.Hide();
Panel panelNew = (Panel)myPanels[selected];
this.Controls.Add(panelNew);
panelNew.Show();

Invalidate(), Refresh() etc. bringen nichts... ich muss irgendwas vergessen haben.... sehe es aber nicht... 🙁

03.11.2005 - 10:24 Uhr

Nee, noch nicht 🙂 👍

Danke, du bist ein Schatz! =)

... wenn ich damit herumprobiert habe, werde ich mal meine Erfahrungen hier schildern...

03.11.2005 - 09:02 Uhr

Also "Fan" bin ich auch nicht von sowas... 😉

Aber hier geht es speziell um ein Programm, was auch nur die Leute bekommen, die ohnehin DomänenAdmins sind... also soll auf keinen Webserver laufen und auch keine "normalen" User im Netz bekommen.

Ich würde gerne auslesen können, welcher User gerade auf einer Maschine arbeitet, welches OS installiert ist, vll. auch noch das System an sich....
... und wenn jemand Ideen hat, nur her damit... denn soooo viel weiter bin ich noch nicht... 8)

02.11.2005 - 13:50 Uhr

Ja... Problem is, ich habe ne Toolbar und habe da Buttons drauf mit Bildern aus ner ImageList. Die Bilder sind Icons, also mit Endung .ico. Wenn ich in meiner Toolbar die Appearance-Eigenschaft auf "normal" setzen, werde die Images der Buttons angezeigt. Ändere ich sie auf "flat", was schöner ist, sind die Images weg. Sehe nur noch die Seperator. Beim laufenden Programm kann ich die Buttons auch klicken, also sie kommen so in dem 3D-Style hervor, aber ich will ja auch die Bilder sehen 🙁 X(

So... und wo wir gerade bei der Toolbar sind: wie kann ich sowohl unter als auch über der ToolBar eine Trennlinie machen? Mit Divider = true habe ich eine solche Linie über der Toolbar, wie kriege ich einen aber da drunter hin? 🤔

02.11.2005 - 09:59 Uhr

_Original von Programmierhans_Ich weiss es schlichtweg nicht.... habe mich bisher nur sehr begrenzt mit Verschlüsselung beschäftigt....

... macht ja nix... du kannst ja nicht alles wissen.... 😁
(obwohl ich das bisher dachte) 😉 8)

Habe nun eine Lösung über Googlen etc. gefunden und habe auf den "Rijndael"-Key gewechselt, da dieser sicherer ist als das "alte" DES (wollte ich eigentlich sowieso schon immer machen, somit passte der momentane Ärger ganz gut).
Da die Beispiele in der MSDN nur über das ver- und entschlüsseln ganzer Dateien handelte, habe ich eine hilfreiche Seite gefunden, auf der erklärt wird, wie einzelne Strings mit dem Rijndael-Algorithmus ver- und entschlüsselt werden.

Für alle anderen hier ein Link auf die Seite: http://www.obviex.com/samples/Encryption.aspx#Output
(Code ist in C# und VB.NET)

01.11.2005 - 16:49 Uhr

Okaaayyy.... das war jetzt zu einfach (also in der MSDN gucken) 😁

Kann ich denn mit dem DESCryptoServiceProvider einen mit "normalen" DES (also das "alte") verschlüsselten String in einer Datei wieder auslesen... eigentlich doch schon, is doch beides DES-Algorithmus...

... und geht das Auslesen auch mit der DESCryptoServiceProvider-Klasse?!

sry... wenn ich so komische Fragen stelle... =)

01.11.2005 - 16:26 Uhr

So, habe es nun umgebaut:


// string keyString = .... ;
// ...
MD5 md5 = new MD5CryptoServiceProvider();
byte[] buffer = Encoding.Default.GetBytes (keyString);
byte[] result = md5.ComputeHash(buffer); 
                
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = buffer;  

string encrpyted = des.Encrypt(data);  // <- ???

... Instanz kann nun angelegt werden... aber Encrypt und Decrypt kennt er nicht mehr... was sind die analogen Methoden dazu?! Kann nix passendes finden... X(

01.11.2005 - 16:02 Uhr

Dieser Code hier lief in einem Projekt ohne Probleme:


// string keyString = .... ;
// ...
MD5 md5 = new MD5CryptoServiceProvider();
byte[] buffer = Encoding.Default.GetBytes (keyString);
byte[] result = md5.ComputeHash(buffer); 
string key = System.BitConverter.ToString(result);
				
DES des = new DES(key);   // hier!
string encrpyted = des.Encrypt(data);   

... nun habe ich diesen Code in ein neues Projekt getan und nun bekomme ich an der Stelle im Code, wo ich "hier" geschrieben habe, diese Meldung:

Eine Instanz der abstrakten Klasse oder Schnittstelle 'System.Security.Cryptography.DES' konnte nicht erstellt werden.

... was geht da nicht mehr?! Ich habe keine Ahnung... in dem anderen Projekt läuft es... es ist 1:1 der gleiche Code, die gleiche Klasse, alles. Einfach nur in einem neuen Projekt... 🤔 X(

01.11.2005 - 12:45 Uhr

Oh... si... gerade gemacht... das ist ja doch das, was ich wollte... 🙂 👍

Also manchmal sind die Beschreibungstags zu bestimmten Funktionen echt nicht eindeutig... 😭

[edit]: Manchmal könnte ich dich knutschen, Programmierhans... =)
(und mich ohrfeigen...)

01.11.2005 - 12:43 Uhr

Original von Programmierhans
TreeNode.SelectedImageIndex

Legt das nicht auch nur das aktuelle Bild fest...?!
Oder habe ich da was übersehen...?