Laden...

Forenbeiträge von qwert_a Ingesamt 57 Beiträge

31.08.2007 - 16:30 Uhr

Ich will nicht auf jedem Entwickler-Rechner den Webserver mit DB installieren. Es ist ein riesen Aufwand die DB zwischen EntwicklerPCs zu sinchrinisieren.

ich dachte, dass mit FP Extentions kann ich von beiden Rechner auf WebApplication zugreifen, debuggen usw.

31.08.2007 - 09:21 Uhr

Ich meine 2.
Schoen waere es wenn wie beide auf ein Projekt zugreifen konnen um die Sourcen zu Editieren, Debuggen

mfg qwert_a

30.08.2007 - 16:00 Uhr

hallo, Zusammen,

hab ne Frage:
wir entwickeln in der Gruppe von 2 Entwicklern ein Webproject in VisualStudio 2005. Das Projekt ist auf eine Machine konfiguriert. Wie kann ich von meinem computer auf das Projekt zugreifen? mit den Schreibrechten und so dass ich die Seite ausfuehren kann??
Auf dem Server sind die Frontpage Page Erweiterungen installiert.

mfg qwert_a

21.05.2007 - 00:40 Uhr

Es ist mir wieder eingefallen:
ilmerge.exe
Download

21.05.2007 - 00:19 Uhr

Codebook 2005 haette mir viel Zeit gesparrt wenn ich es mir fruehe gekauft haette. Die Anschaffung des Buches lohnt sich auf jedem Fall. Es sei denn man ist SuperDuper Profi.

21.05.2007 - 00:15 Uhr

Hallo, Zusammen,

weiss jemand vielleich den Namen des Microsoft-Tools, der aus mehreren dlls eine macht?
ich hab es schon verwenden aber komme nicht mehr auf den Namen 😦(

20.05.2007 - 22:49 Uhr

Original von dr4g0n76
Tja, wenn, wann und wie löst Du denn das Invalidate aus?

Wie meinst Du es genau?

Die Idee ist das Pie-Diagram und Balken-Diagramm dann zu scalieren, wenn die Groesse des Forms veraendert wurde. Dazu habe ich denn TableLayout verwendet. Grundsaetzlich funktioniert alles. Nur man sieht halt wie z.B TableLayout-Control beim Resizen langsam und zitternd aufgebaut wird. Ich moechte es aber so fliessend wie in Swing hinkriegen.

19.05.2007 - 18:29 Uhr

Original von dr4g0n76
Achtest Du denn beim Resize in OnPaint auch darauf dass Pie mitzuskalieren?

genau. und es wird sogar skaliert, nur es ist tierisch langsam

19.05.2007 - 18:27 Uhr

Original von blackcoin
sorry das war geradse noch nicht da

mfg

jo, entschuldigung...

19.05.2007 - 18:15 Uhr

Ich zeichne eine Pie-Diagramm auf dem Panel, deswegen bringt Ancor an der Stelle nichts...

19.05.2007 - 18:08 Uhr

Hallo, Zusammen!

Ich moechte gerne ein Formular erstellen, das beim Resizen sich wie Swing in Java benimmt. Das heisst die Kontrolls aendern ihre groesse.

dafuer habe ich 4 Panels erzeugt, jedes Panel ist doublebuffered. Beim Resizen des Formulars wird an jeweiliges Panel die Groesse uebergeben. die Groesse der Controls wird dementsprechend berechnet, siehe die Anlagen.

Das Problem ist, dass die Aufbau des Formulars beim Resizen irre langsam laeuft und zittert. Das sieht einfach schlecht aus. Haette jemand vielleicht ein Tipp fuer mich wie man das vernuenftig loesen kann?

lg

qwert_a

01.08.2006 - 10:45 Uhr

Ich habs gefunden. Danke!!

31.07.2006 - 15:31 Uhr

Original von daniel
Wenn der Debugger grade an einem Breakpoint steht, kannst du bequem den Code ändern

Das geht wohl. Nur wenn ich vergesse Applikation zu schliessen mekert VS mit diesem hässlichen Fensterchen 🙁
In Vs2003 war das anders. da musste man den Breakpoint nicht stellen.

31.07.2006 - 15:07 Uhr

Hallo, Leute!

In VS 2003 konnte ich Quelltexteditieren, wenn Debugging lief. in VS2005 wird ein Fenster angezeigt mit dem Hinweis, es sei nicht möglich den Source zu editieren, wenn das Programm debuggt wird.

Es nervt ja total!! Kann man es in Vs2003-art umstellen?

mfg qwert_a

19.07.2006 - 13:59 Uhr

Original von MarsStein
Hallo,

@qwert_a
Kannst Du mal die Fehlermeldung posten? Ich denke es fehlt wahrscheinlich eine Referenz auf die Control:

<%@ Reference Page="path/to/MyWebUserControl.aspx" %>  

oder falls es sich um eine .ascx handelt:

<%@ Reference Control="path/to/MyWebUserControl.ascx" %>  

im Kopf der einbindenden Seite.

EDIT: "%" vergessen

  1. Genau ist es der Sinn der Sache. ich habe keine referenzen in controls. sollte auch nicht, weil die beide klassen sollten von einander nichts wissen.
    Deswegen die statische variable.

ps. ich habe versucht mit der events zu arbeiten. es geht auch nicht genau so wie mit dem zugriff auf eine statische variable.

  1. Es gibt keine fehlermeldung. ich hab einfach kein zugriff auf MyWebUserControl.index

  2. Da ich kein asp wirklich kann programmire ich ganz wenig mit asp. Sondern packe alle funktionen in ...aspx.cs Dateien.

mfg

qwert_a

19.07.2006 - 13:48 Uhr

Danke! alles hat geklappt mit der session variable.

19.07.2006 - 13:05 Uhr

Ich habe in MyWebUserControl.aspx.cs eie Variable deklariert

public static int index = 0;

So, wie kann mann diese aus der anderer aspx.cs Datei zugreifen?
So wie in einem FatClient wird es bestimmt nnicht funktionieren.
Hab schon versucht:

MyWebUserControl.index
  • vergeblich. Sieht so aus als könntedie Klasse MyWebUserControl nicht zugreifen.

die beide Klassen befinden sich in einem Folder. namespace ist nicht vergeben.

Danke

qwert_a

14.07.2006 - 15:14 Uhr

Original von MarsStein
Hallo,
sieht das jetzt nu hier so aus oder steht das Checkbox-Tag tatsächlich auch in Deiner Control innerhalb des <%@Control%>-Tags?
Das müßte doch so aussehen:

 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Tabellenausgabe.ascx.cs" Inherits="UIControls.Tabellenausgabe" %>  
<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged1" /><br />  
   

Stimmt es ist ein Tippfehler von mir. sorry, Leute...

14.07.2006 - 15:00 Uhr

ok. ich hab grundlegendes Problem gefunden:
in CheckBox muss Eingenschaft AutoPostBack="True" sein.

14.07.2006 - 14:14 Uhr

Hier ist der Quelltext

Tabellenausgabe.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Tabellenausgabe.ascx.cs" Inherits="UIControls.Tabellenausgabe" 
<asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged1" /><br />

%>

Tabellenausgabe.ascx.cs:


namespace UIControls
{
    public partial class Tabellenausgabe : System.Web.UI.UserControl
    {
        protected void CheckBox1_CheckedChanged1(object sender, EventArgs e)
        {
            Response.Write("<script LANGUAGE='JavaScript'>alert(\"TEST\")</script>");
        }
    }
}

14.07.2006 - 13:47 Uhr

Hallo, zusammen!

Ich hab ein UserControl erzeugt und den Checkbox rübergezogen. Dann habe ich für den Checkbox CheckedChanged event geschrieben.

Wieso wird das Event nie ausgelösst??

mfg,

qwert_a

13.07.2006 - 13:30 Uhr

Original von Waschbecken
Geht nicht. Nimm einen CustomValidator und bau dir die Logik selbst.

oki doki.
Trotzdem es wäre logisch, wenn der Validator eine Gruppe von Felder prüfen würde.

ich hab übrigens über das Thema ein Artikel mittlerweile gefunden:

http://www.geekswithblogs.net/stealthiscode/Articles/SelfValidatingWebTextBox.aspx

vielleicht hilft das jemandem

qwert_a

13.07.2006 - 11:17 Uhr

Hallo zusammen,

ich benutze .netframework 2.0 und visualstudio 2005.

Auf meinem form erzeuge ich dynamisch mehrere texboxen, die ich validieren möchte.
es ist einwenig blöd für jeden textbox einen RequiredFieldValidator zu erzeugen.

weiss jemand wie man mehrere textboxen mit einem RequiredFieldValidator validiert`?

28.06.2006 - 15:58 Uhr

Ich versuche meine Applikation auf dem Notebook laufen zu lassen. hab iis brav installiert. Beim zugriff auf der Seite wird so einen Fehler geschmiessen:

Serverfehler in der Anwendung /Graph3.

Stapelüberwachung:

[NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.]
System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name) +1618
System.Web.Security.WindowsAuthenticationModule.OnEnter(Object source, EventArgs eventArgs) +593 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

Wo konnte man nach dem Ursprungs des Fehlers suchen?

qwert_a

28.06.2006 - 09:16 Uhr

Wie kann man eine Variable aus z.B. default.aspx seite nach einen Control Übergeben?

default.aspx:

public partial class _Default : System.Web.UI.Page
    {
        string PROJEKTPFAD = @"C:\Inetpub\wwwroot\webmonitor\meinProjekt\";
        XmlDocument xmldoc = new XmlDocument();

        protected void Page_Load(object sender, EventArgs e)
        {
            //create xmldoc
        }
     }  

Control:


    public class Tabellenausgabe : Control
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("<h1> Transaktion </h1>");
            //Hier hätte ich gerne den Zugriff auf xmldoc aus default.aspx
        }
    }
};

danke im Vorraus

28.06.2006 - 08:48 Uhr

Danke, ich dachte schon ich werde verrückt 🙂)

27.06.2006 - 19:05 Uhr

Ich versuche mein Control zu komplilieren:

csc /t:library /out: C:\Inetpub\wwwroot\webmonitor\bin\Tabellenausgabe.dll /r:System.dll, System.Web.dll Tabellenausgabe.cs

Dabei bekomme ich so eine Fehlermeldung:

Microsoft (R) Visual C# 2005, Compilerversion 8.00.50727.42
für Microsoft (R) Windows (R) 2005 Framework, Version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. Alle Rechte vorbehalten.

fatal error CS2005: Fehlende Dateispezifikation für die Option "/out:"
fatal error CS2008: Es wurde keine Eingabe vorgenommen.

quelltext des Controls:


using System;
using System.Web;
using System.Web.UI;

namespace UIControls
{
    public class Tabellenausgabe : Control
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("<h1> Transaktion </h1>");
        }
    }
};


Wo bin ich falsch???

27.06.2006 - 10:51 Uhr

Wenn ich in VS Strg+F5 drücke, dann funktioniert es.
Aber in Iexplorer kann die Seite nicht aufgerufen werden:

Die XML-Seite kann nicht angezeigt werden
Die XML-Eingabe kann nicht angezeigt werden, wenn Stylesheet XSL verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf Aktualisieren, oder wiederholen Sie den Vorgang später.

Ein Name beginnt mit einem ungültigen Zeichen. Fehler beim Bearbeiten der Ressource 'http://xxx.xxx.xxx.xxx/webmonitor/Login.as...

Was sollte es heissen?

26.06.2006 - 12:29 Uhr

Super Tipp, DCoder!
Danke!

26.06.2006 - 09:27 Uhr

Hallo, All!

bin absoluter Leier in Asp. net, muss aber ganz schnell eine Afgabe erledigen.

Habe in c# ein UserControl geschriben, jetzt muss er in einer WebForm dargestellt werden.
Mein UserControl bekommt einfah Array von Werten und macht daraus Paar Grafen.
Es wäre nett wenn man den UserControl mit Asp einbinden könnte 🙂

Danke im Vorraus,

qwert_a

19.06.2006 - 14:16 Uhr

Hallo, Leute!

Hab ein kleines Problem beim Stoppen des Dienstes sagt er mir:
Dienst auf dem "Localer Computer" konnte nicht beendet werden. Fehler 1067: Der Process wurde unerwartet beendet.

So wie ich aus den ähnlichen Themen in Forum verstanden habe muss man in OnStop-Methode des Dienstes die alle verwendeten Resourcen freigeben. Trotzdem kriege ich es nicht gebacken.

Ich poste auch den Quelltext. Wenn mir jemand hilft mein Fehler zu finden wäre ich sehr dankbar.

Dienst:

 
protected override void OnStart(string[] args)
{
   server = new MyTCPServer();
}

protected override void OnStop()
{
if (this.CanStop)
{
   this.Stop();
   server.StopServer();
}


Und MyTCPServer:

  
//Konstruktor
public MyTCPServer()
{
   dienst = new ProcessWaechter();
   dienst.doSendData += new ProcessWaechter.OnDataSend(sendData);
   readThread = new Thread(new ThreadStart(RunServer));
   readThread.Start();
}


public void StopServer()
{
            //Die Resourcen, die verwendet werden
            readThread = null;
            writer.Close();
            reader.Close();
            socketStream.Close();
            connection.Close();
            dienst = null;
}

11.05.2006 - 15:43 Uhr

thanks 2 all 🙂

Jetzt hab ich es!

11.05.2006 - 14:03 Uhr

Hi, All
Ich habe gerade den MSDN-Artikel über das Thema StreamReader gelesen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconWritingTextToFile.asp

Was mich verwirrt ist, dass in erstem Beispiel wird StreamReader geschlossen, in zweitem aber nicht.

Hat jemand eine Erklärung dafür?

Danke,

qwert_a

07.05.2006 - 10:49 Uhr

Ist dein Steuereelent von Windows.Forms.Label abgeleitet?

07.05.2006 - 10:34 Uhr

Original von der Marcel
Hallo gwert_a!

Das ist nett von dir, dass du dir die Mühe machst und soviel Code tippst. 👍 Letztenendes finde ich aber, dass es für den Fragestellenden schwer ist, sich in soviel Code hineinzufinden.

ich bin immer noch der Leier in Themen Programmierung und ich denke das aus dem Sicht des Leies ist es gar nicht schlecht das ganze Program zu Verfügung haben, da es ist manchmal schwer die Tips und Snipets zu impliementieren.
Ausserdem wusste ich bis heute morgen nicht wie die kommunikation zwischen 2 Formen zu gewährleisten. Hab also "so viel code" ehe für mich selbst geschrieben.
Auf jeden Fall danke für den Tip mit Events 🙂

qwert_a

07.05.2006 - 07:51 Uhr

Jetzt habe ich es. so ist es richtig.


class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm();
		f.doSetText += new MyForm.OnSetText(f2.setUserName);
		f2.Show();
		Application.Run(f);
	}	
}

07.05.2006 - 07:42 Uhr

Original von Daniel_g
Hallo Daniel_g!

Öffentliche Events, bei denen sich eine andere Form einklinken kann, können dazu benutzt werden. Die Events transpoertieren die benötigten Daten einfach mit, wenn sie gefeuert werden.

der Marcel

hi, der Marcel!

Wenn du mir sagen könntest was mache ich verkehrt...


using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{
	private Button btAction = new Button();
	private String [] text = {"1111111111111",
									  "2222222222222",
									  "3333333333333",
									  "4444444444444",
									  "5555555555555"};
	public int index = 0;
	public delegate void OnSetText(string str);
	public event OnSetText doSetText;
	
		
	public  MyForm()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		if(this.index > 4) this.index = 0;
		if (doSetText != null) 
			doSetText(this.text[index]);
		index ++;
	}
}

public class MyForm2 : Form
{
	private TextBox txtText = new TextBox();
	public  MyForm2()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.txtText.Location = new Point(0, 0);
		this.txtText.Size = new Size(200, 25);
		this.Controls.Add(this.txtText);
	}
	
	public void setUserName(string str)
	{
		this.txtText.Text = str; 	
	}
}

class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm();
		f.doSetText += new f.OnSetText(f2.setUserName); //<---Fehler!
		Application.Run(f);
	}	
}

Fehler:
2FormsMitEvents.cs(68,22): error CS0246: The type or namespace name 'f' could not be found (are you missing a using directive or an assembly reference?)

06.05.2006 - 23:57 Uhr

Du hast Recht, rockthecity. Es hat funktioniert. nur jetzt überlege ich, ob dieses Problem nur mit dem Loopback erscheint oder man kann probleblos die Counter von anderen PCs im Netz holen. mal sehen...

danke!

06.05.2006 - 22:28 Uhr

Sehr guters Beispiel. Danke

06.05.2006 - 22:14 Uhr

Oder so:


using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{

	private Button btAction = new Button();
	
	public  MyForm()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		new Form().Show();
	}
}

class MainApp
{
	public static void Main()
	{
		
		MyForm f = new MyForm();
		Application.Run(f);
		
	}	
}


Der Unterschied ist eindeutig. oder?

06.05.2006 - 22:11 Uhr

using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{
	private MyForm2 tmpform;	
	private Button btAction = new Button();
	
	public  MyForm(MyForm2 tmp)
	{
		this.tmpform = tmp;
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		this.tmpform.Show();
	}
}


public class MyForm2 : Form
{
	private TextBox txtText = new TextBox();
	public  MyForm2()
	{
		this.Text = "My simple Form in UltraEdit";	
	}
}



class MainApp
{
	public static void Main()
	{
		
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm(f2);
		Application.Run(f);
		
	}	
}



06.05.2006 - 20:26 Uhr

Hab gerade etwas gebastelt:


using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{
	private MyForm2 form;	
	private Button btAction = new Button();
	private String [] text = {"1111111111111",
					 "2222222222222",
					 "3333333333333",
					 "4444444444444",
					"5555555555555"};
	private int index = 0;
	
	public  MyForm(MyForm2 tmp)
	{
		this.form = tmp;
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
				
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		
		if(this.index > 4) this.index = 0;
		form.setUserName(this.text[index]);
		index ++;
	}
}


public class MyForm2 : Form
{
	private TextBox txtText = new TextBox();
	public  MyForm2()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.txtText.Location = new Point(0, 0);
		this.txtText.Size = new Size(200, 25);
		this.Controls.Add(this.txtText);
	}
	
	public void setUserName(string str)
	{
		this.txtText.Text = str; 	
	}
}

class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm(f2);
		f2.Show();
		Application.Run(f);
	}	
}



06.05.2006 - 19:58 Uhr

Beschreib bitte genauer was möchtest du haben.
sollte die Übertragung per Button-click erfolgen; Ist die Anwendung Multithreded...

06.05.2006 - 19:49 Uhr

Was ich nicht verstehe ist, dass
PerformanceCounterCategory.GetCategories (String) kann 2 Typen von Exeptions werfen:

ArgumentException
Der machineName-Parameter ist ungültig.

Win32Exception
Fehler beim Aufruf einer zugrunde liegenden System-API.

NullPointerException darf überhaupt nicht auftreten, weil es um eine statische methode geht - GetCategories(String) 😭

06.05.2006 - 19:42 Uhr

InnerException - null
Message - "Object reference not set to an instance of an object."

NullReferenceException wird beim ausführen dieses Codes geworfern:

PerformanceCounterCategory[] PCCs = PerformanceCounterCategory.GetCategories(MachineName);

05.05.2006 - 20:54 Uhr

Original von rockthecity
wie sieht es aus mit "MachineName".

Ansonsten vielleicht debuggen wenn möglich

Gruß

rockthecity

MachineName ist 127.0.0.1 muss also immer erreichbar sein.

05.05.2006 - 20:23 Uhr

Hi, Leute! hab folgendes Funktion, das die PerformanceCounters aus dem System holt. Funktioniert bei mir im Betrieb wunderbar. Am Wochenende wollte ich einbisschen zu Hause arbeiten und plötzlich stehe ich dumm da, da die Funktion, die der Anzahl der Counters zurückgibt wirft eine NullPointerException


private int CountNodes()
		{
			int result = 0;
			NoOfCounters = 0;
			string [] InstanceNames=null;
			try
			{
/////folgende Anweisung wirft eine NullPointerException				
PerformanceCounterCategory[] PCCs = PerformanceCounterCategory.GetCategories(MachineName); 
				result +=PCCs.Length;
				foreach(PerformanceCounterCategory pcc in PCCs )
				{
					try
					{
						InstanceNames = pcc.GetInstanceNames();
						result+=InstanceNames.Length;
						if (InstanceNames.Length>0) 
						{
							result += InstanceNames.Length * pcc.GetCounters(InstanceNames[0]).Length;
							NoOfCounters +=InstanceNames.Length * pcc.GetCounters(InstanceNames[0]).Length;
						}
						else 
						{
							result += pcc.GetCounters().Length;
							NoOfCounters +=pcc.GetCounters().Length;
						}
					}
					catch
					{
						PCCs.GetEnumerator().MoveNext();
					}
				}
			}
			catch(Exception ex)
			{
				//Cannot access the machine
				MessageBox.Show(ex.ToString() + ex.InnerException.ToString());
				result=-1;	
                
			}
			return result;
		}


Hätte jemand vielleicht eine Idee?

08.04.2006 - 21:10 Uhr

Original von VizOne
*Kopfkratz*

Was ist denn das Problem? Versuche bitte etwas genauer zu beschreiben, was du erreichen möchtest und was nicht funktioniert. Und welche Giraffe??

Grüße,
Andre

Sorry, haben von Kollegen falsches Deutsch gelernt...
Also das Problem ist, dass wenn man das Fenster bewegt, fängt es an zu flickern un die CPU auslastung steigt auf 50%. das soll aber nicht normal sein oder?
Der Kollege von mir hat, wie er selber gesagt hat, dasselbe in Java gemacht und es lief ohne zu flickern.

07.04.2006 - 14:40 Uhr

Hi all,

Ich zeichne den Gitter auf dem Form, doch doublebuffer Gieraffe bekomme ich nicht hin. hier ist der Quelltext dazu:


    public partial class Form1 : Form
    {
        Bitmap BackBuffer;
        Graphics BufferGraphics;

        public Form1()
        {
            InitializeComponent();
            BackBuffer = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
            BufferGraphics = Graphics.FromImage(BackBuffer);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            BufferGraphics.Clear(Color.Black);
            DrawGrid(BufferGraphics);
            e.Graphics.DrawImageUnscaled(BackBuffer, 0, 0);

            
        }
        protected override void OnPaintBackground(PaintEventArgs pevent)
        {
            //Don't allow the background to paint 
        }

       
        private void DrawGrid(Graphics grfx)
        {
            Pen pen = new Pen(Color.Green);

            int j = 0; int i = 0;

            for (; i < this.ClientRectangle.Height; i += 2)
                grfx.DrawLine(pen, new Point(0, i), new Point(ClientRectangle.Width, i));
            for (; j < ClientRectangle.Width; j += 2)
                grfx.DrawLine(pen, new Point(j, 0), new Point(j, ClientRectangle.Height));

       }

        private void Form1_Resize(object sender, EventArgs e)
        {
            BackBuffer = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
            BufferGraphics = Graphics.FromImage(BackBuffer);
        }

Da ich habe so was ähnliches in C builder programmiert, dachte ich mir dasselber muss doch auch in C# gehen.
Also bin sehr dankbar wenn Ihr, Profies, helfen würdet 🙂

Ps. http://www.bobpowell.net/doublebuffer.htm habe ich schon angeschaut

09.03.2006 - 10:28 Uhr

Hier ist eine Klasse, die von TreeView abgeleitet ist. sie lässt die Knoten kopiren und löschen.


using System;
using System.Windows.Forms;

namespace treeview
{
	/// <summary>
	/// Zusammenfassung für MyTreeView.
	/// </summary>
	public class MyTreeView: TreeView
	{
		private string [] path;   
		public MyTreeView()
		{
			//
			// TODO: Fügen Sie hier die Konstruktorlogik hinzu
			//
		}


		public void addKnot(TreeNode tr)
		{
			if(tr.FirstNode == null)
			{
				string[] str = tr.FullPath.Split('\\');
				suche(this.Nodes, str, 0);
			}
			else
			{
				foreach(TreeNode tmpNode in tr.Nodes)
				{
					addKnot(tmpNode);
				}
			}
			 
		}

		public void suche(TreeNodeCollection node, string[] str, int index)
		{
			bool flag = true;

			if(index >= str.Length)
			{
				return;
			}   
			foreach(TreeNode pnode in node)
			{    
				if(pnode.Text.Equals(str[index]))
				{
					suche(pnode.Nodes,str, index + 1);
					flag = false;
				}
			}
			if(flag)
			{
				copy(node,str, index);
				
			}

		}  
		public void copy(TreeNodeCollection node, string[] str, int index)
		{   
			for(int i = index; i < str.Length; i++)
			{
				TreeNode tmpNode = new TreeNode(str[i]);
				node.Add(tmpNode);
				node = tmpNode.Nodes;
			}
  
		}


		public void delete(TreeNode node)
		{
			if(node != null)
                node.Remove();
		}

	}
}


Usage:


private void button1_Click(object sender, System.EventArgs e)
		{     
			treeView2.addKnot(treeView1.SelectedNode);
		}

treeview2 ist als MyTreeView definiert