Hi Blackdragon,
ich würd mir an deiner Stelle mal das Singleton-Pattern agucken:
http://de.wikipedia.org/wiki/Einzelst%C3%BCck_%28Entwurfsmuster%29
Hier nochmal speziell für c#:
http://www.yoda.arachsys.com/csharp/singleton.html
und wenn es um die reine Verbindung mit einer DB auf dem Lotus-Server geht
http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21465081.html
ist zwar VB.NET aber kann man ja umschreiben!
http://www-12.lotus.com/ldd/doc/notessql/3.0.1/notes_sql.nsf/4d74586c8dcad500852563c000646f90/1ac11d9717ac5dc985256a710056419f?OpenDocument
string myConnString = "Driver={Lotus NotesSQL 3.01 (32-bit) ODBC DRIVER (*.nsf};Server=myServerName;Database=mydir\myDbName.nsf;Uid=myUsername;Pwd=myPassword";
OdbcConnection myConnection = new OdbcConnection(myConnString);
GPC schrieb:
Die .NET IDE SharpDevelop wäre eine OpenSource Alternative, die auf jeden Fall eines näheren Blickes wert ist.
MfG
GPC
SharpDevelop enthält allerdings keinen Compiler.
Der Compiler ist, wie in der ersten Antwort vermerkt, im .NET SDK enthalten.
Auch VS.NET installiert einfach nur das SDK, um einen Compiler zu haben.
ich rbauche die titelleiste. nur halt net die blöden buttons(minimieren,maximieren,schliessen)... nur dadurch dass die buttons weg sind, kann man auch im maximierten modus wieder das dingen verschieben... total blöd
werde wohl die buttons drin lassen und die einzelnen ereignisse abfangen oder so. aber das ist natürlich nicht wirklich schön....
Du guckst nach wie der Datentyp dieses Formular heisst.
Jetzt Parametrisierts Du einen Parameter bei der Deklaration deiner NichtGUI-Methoden mit diesen Typ.
Beim Aufruf der NichtGUI-Methode übergibst Du per this sozusagen die Referenz auf das Formular.
Ergebnis Du kannst je nach Scope der NichtGUI-Methode auf alle Fälle immer
auf die public-Member der übergeben Formularinstanz durch das this
zugreifen.
Ist die NichtGUI-Methode Teil des Formular selbst hast Du die Kontrolle über alle Member des Formulars innerhalb der NichtGUI-Methode.
starchild schrieb:
Mit .NET 2.0 (zu Hause) funktioniert das Wunderbar.
Aber im Labor an der Uni gibts nur .NET 1.1 und dort schaffe ich es leider nicht, eine FileList nach Datum zu sortieren.
So wie ich es verstanden habe, müsste ich dazu die Klasse FileList um IComparable erweitern.
Oder geht das anderst?
So kannst bei dann bei Deiner UNI wegen .NET 1.1 tun:
public class ReverseSorterLastAccessTime : IComparer // für letzten Dateizugriff rückwärts sortiert
{
int IComparer.Compare( Object x, Object y )
{
return( (new CaseInsensitiveComparer()).Compare( (y as FileInfo).LastAccessTime, (x as FileInfo).LastAccessTime ) );
}
}
public class ForwardSorterLastAccessTime : IComparer // für letzten Dateizugriff vorwärts sortiert
{
int IComparer.Compare( Object x, Object y )
{
return( (new CaseInsensitiveComparer()).Compare( (y as FileInfo).LastAccessTime, (x as FileInfo).LastAccessTime ) );
}
}
ersetze dann bei diesen ins Augen stechenden "type casts"
(x as FileInfo).LastAccessTime )
gegen die entsprechende FileInfo-Eigenschaft Deiner Wahl (z.B. CreationTime).
Jetzt hast Du ja zwei Sortierklassen eine um aufsteigen zu sortieren und die andere für andersrum.
Naja und sortiert wird dann eben mit folgenden Codeschnippel:
try
{
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo("d:\\");
System.IO.FileInfo [] fileInfos = dirInfo.GetFiles();
ArrayList arr = new ArrayList(); // Arralist kann sortieren
// damit was zum sortieren vorhanden ist alle FileInfo-Objekte reintun
for(int idx = 0;idx <fileInfos.Length;idx++)
{
arr.Add(fileInfos[idx]);
}
// Die Sortierer instanzieren
IComparer forwardComp = new ForwardSorterLastAccessTime();
IComparer reverseComp = new ReverseSorterLastAccessTime();
// jetzt einen Sortierer ausuchen und einfügen und sortieren lassen
arr.Sort(reverseComp);
// die geordneten Daten (Dateinamen) in einer ListBox bringen
for(int idx0 = 0; idx0 < arr.Count;idx0++)
{
listBox1.Items.Add((arr[idx0] as FileInfo).Name);
}
}
catch(System.Exception ex) // falls etwas eine Ausnahme macht so zum B. bei Sortierung
{
MessageBox.Show(ex.Message);
}
Ziemlich dürftig, dieses Codefragment, aber hast Dir schon mal angesehen, welche Property Du von OdbcCommand belegst?
Versuche es mal mit ...
cmd.CommandText = CommandType.Text;
!?!?!?! schrieb:
Ist es irgendwie möglich ein Form beim starten an der stelle erscheinen zu lassen an der sich derzeit die maus befindet?
private void Form1_Load(object sender, System.EventArgs e)
{
this.Location = MousePosition;
}
starchild schrieb:
Es gibt echt zu viele Komponenten als das man sie als Nichtprofi alle kennen könnte...
Du bist gut es gibt mit Sicherheit Leute die sich jahrelang mit was beschäftigen, sich drüberhinaus mit Schwerpunkten beschäftigen müssen. Und eben darum auch nicht die hinterletzte Komponente kennen. Davon kann sich bestimmt kaum jemand lossprechen.
Mund zu Mundpropaganda, Suchmaschinen und Foren sind daher ein wahrer Segen in solcher Hinsicht. Das sind gute Schlüssel um in der Infomationsflut die richtige n Informationen zu finden.
Gruss sclearscrenn
P.S.: Und um die Infomationsflut noch weiter zu erhöhen, kann jeder mit seinen Werkzeugen selbst auch noch Komponenten bauen....
Deshalb gibts Foren und und und...
Hellsgore schrieb:
Servus,
du kannst auch einfach als passwordchar '\0' eintragen und gut is....
mfg
Hellsgore
Auch von mir, vielen Dank!
Kompetente Antwort.
der ghetto-coder hat gesprochen.
Ich weiss ja nicht wie es den andern geht, aber mir sagt JWindow von swing gar nichts.
Beschreib doch einfach welche Eigenschaften die Dialogbox haben sollte
SkySurfer schrieb:
Hi,
ich habe eine DataGridView erstellt die ich mit Daten aus einer DataSet Tabelle befülle. Nun möchte ich aber die Daten in der Liste durch Eingabe eines Suchschlüssels einschränken. D.h. ich hab ein Textfeld, in das ein Kriterum eingegen wird.
Bei einem TextChanged des Textfeldes wird dann folgendes aufgerufen:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
dataGridViewGenre.DataSource = ds.Tables["Genre"];
Doch leider ist das DataGridView danach leer.
Auch wenn die Abfrage von hand in der Datenbank ein Ergebnis liefert.
Woran kann das liegen?
Gruß SkySurfer
oh und desweiteren was mir auffällt guckmal oben ganz scharf hin
"Genre" ist doch ein Datenfeld einer Tabelle oder?
Warum machst Du dan sowas
..... .DataSource = ds.Tables["Genre"];
Seid wann ist eine einfache Spalte eine Tabelle?
ich gehe davon aus Du hattest kurzeitig eine schwachen Moment oder?
So müsste es gehen
..... .DataSource = ds.Tables[0];
da Du eine virtuelle Tabelle bekommst auf Basis einer SQL-Abfrage
P.S.: Sollten die Namen gewollt sein kann das Ergebnis was bei Dir leer ist
auch auf einem Namenskonfilkt beruhen, weil Du als Tabellennamen wie auch als Feldnamen "Genre" benutzt.
Ohne jetzt komplett die restliche Struktur Deines Codes und Deiner DB
zu kennen sehe ich schlussendlich 1 mögliche Fehlerquelle und ein Designmanko:
Designmanko
1. DB nicht richtig normalisiert erkennbar daran
das Du DISTINCT im Sql verwenden musst nur um zu verhindern das reduntante
Datensätze zu bekommen. Weil Du bei jedem Titel das Genre angibst was dadurch
eben reduntant ist. Lösung Eine Tabelle mit Namen Genre anlegen mit 2 Feldern
Name und Nummer und ein Feld davon als Fremdschlüssel in der Tabelle "Songs"
verwenden.
Fehlerquelle
2. Du verwendest im C#-Code die Zeichenkette "Genre" gleichzeitig als Name fuer
eine Spalte und fuer eine Tabelle ----> möglicher Namenskonflikt
hier verwendest Du es als Spalte:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
und hier verwendest Du es im C#-Code als Tabelle:
dataGridViewGenre.DataSource = ds.Tables["Genre"];
Teste es mal so:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
daGenre = new OleDbDataAdapter(cmdGenre);
DataTable dtGenre = new DataTable();
daGenre.Fill(dtGenre);
dataGridViewGenre.DataSource = dtGenre;
Ich treffe in der Wahl der Namen fuer Tabellen und Feldnamen immer klar abgegrenzte Bezeichner. Bei Abfragen entstehen ja immer virtuelle Treffermengen
da benutze ich lieber DataTable zum anzeigen. Im .NET 1.1 hatte ich immer das Problem bei Verwendung von DataSet wurde das Ergebnis der Abfrage immer erst dargestellt indem ich explizit durch einen Klick im DataGrid die Struktur sichtbar wurde. Wenn man per Fill die Ergebnisse in eine DataTable bringt und diese DataTable der DataSource-Eigenschaft zuweisst wird die ergebnissmeng immer sofort im Grid angezeigt.
So mehr Input kann ich Dir wirklich nicht zur verfügung stellen. Nach langer Grübelei sieht man ja wievielmal ich editiert habe, bin ich mit dem Latein jetzt am Ende.
Gruss sclearscreen