Laden...

Forenbeiträge von HolgerBremen Ingesamt 38 Beiträge

15.06.2009 - 09:34 Uhr

Ich möchte zur Laufzeit aus einem Form-Namen als String ein Form-Objekt erzeugen. Ich mache das über Type.GetType() und Activator.CreateInstance().

Das ganze klappt auch, wenn das zu erstellende Formobject bzw. Klasse im gleichen Projekt ist. Da ich aber eine Projektmappe mit einem Startprojekt (exe) mit diversen Projekten (DLLs) habe, möchte ich auch aus anderen Projekten die Forms erzeugen. Das klappt leider nicht. Im Hauptprojekt ist der Namespace bekannt. Auch der Verweis auf die DLL in vorhanden. Es kommt immer der Fehler "... Klasse konte nicht geladen werden" bei Type.GetType().

        private Control createNewControl(string controlToCreate) 
        {

            Form myControl = new Form();
            
            try 
            { 
                //Define the type of the control you want to create an instance of using reflection. 
                Type typeofControl = Type.GetType(controlToCreate, true);

                myControl = (Form)(Activator.CreateInstance(typeofControl));

                //(myControl as Form).Show();
 
            } 
            catch (Exception ex)
            { 
                //Set the control to null 
                myControl = null; 
            } 

            return myControl; 

        } 

Gruß
Holger

02.06.2009 - 12:58 Uhr

Danke für die schnelle Antwort, obwohl ich dies nicht hören wollte.

Kann doch wohl nicht wahr sein, soll das ein Feature sein.

Holger

02.06.2009 - 08:27 Uhr

Mein Problem ist folgendes:

Ich habe ein Form mit einem Grid, einem Panel, diversen Buttons und einer Datagridview. Ich habe nun das Form vererbt. In der vererbten Klasse kann ich nicht alle Controls bearbeiten. Bei allen Buttons z.B. kann die die Properties im Designer setzen, beim Grid, und Panel z.B. kann die keine Properties im Designer setzen, alle Properties sind disabled. Die Property "Modifiers" im Basisform ist auf public, locked=false.

Vom Programm heraus kann ich die Properties trotzdem alle setzen. Warum gehts bei den einen Controls und nicht bei den anderen?

Gruß
Holger

02.06.2009 - 08:11 Uhr

Ich habe mich da wohl etwas falsch ausgedrückt.

Ich habe ein Grid mit einer gebundenden Datatable. Im Grid habe ich nun nichtgebundene Spalten hinzugefügt, die aber nicht in der Table vorhanden sind. Die nichtgebundenen Spalten will ich nun selber füllen. Und dafür brauche ich ein entsprechenden Ereignis.

CellFormatting war aber trotzdem eine gute Idee. Klappt auf jeden Fall.

Gruß
Holger

29.05.2009 - 13:48 Uhr

Ich habe ein gebundenes Datagridview. Nun habe ich zwei Spalten hinzugefügt, die nicht gebunden sind, die ich nun selber füllen will.

Welches Ereignis kann ich dafür nehmen, dass immer alle sichtbaren Spalten gefüllt werden. Ich möchte nicht beim Starten alle Spalten durchlaufen, da ich nicht weiß, wieviel Datensätze vorkommen können.

Holger

04.08.2008 - 20:00 Uhr

Danke für die Antworten. Die SQL-Direct Komponenten von http://www.devart.com/ scheinen ja genau das sein, was ich suchte. Ich werde mir mal die Trial runterladen und mal testen.

@Robert

Hast du die Komponten, bzw. die SQL-Direct-Komponten von devart.com schon in Betrieb und kannst was drüber sagen?

Gruß
Holger

04.08.2008 - 16:51 Uhr

Mit den Standard-Borland Komponenten hatte ich nie was gemacht. Ich hatte mir gleich die SQL-Direct Komponenten besorgt. Diese bieteten einen Nativ-Zugriff und waren damit sehr schnell. Beim damaligen Projekt waren die Insert sehr zeitkritisch und darauf kam es mir an.

Z.B. bei der TSDQuery-Komponente wird das Connection-Objekt gesetzt, die SQL-String (mit where-Bedingung) angegeben und dann Active=true. Alle Insert, Delete und Updatekomponenten werden automatisch erzeugt. Bei Änderung der Tabelle werden alle abhängigen Objekte aktualisiert. und, und, und...

Datenbankänderung werden einfach mit

Object.edit;
... Felder setzen
Object.ApplyUpdates

gemacht.

Entweder sehe ich die Einfachheit in Visual Studio gegenüber Delphi nicht oder in VS ist es einfach komplizierter. Ich muß in VS immer mehr Code erzeugen, als es Delphi nötig war. Zur Zeit arbeite ich immer mit SQLCommand+SQLDataReader und SQLDataAdapter.

Ich arbeite momentan mir dem 2.0 Framework. Das Problem ist, das auf den Zielrechnern, auf den meine Software läuft, nicht immer sichergestellt ist, das dort das neuste Framework installiert ist.

Gruß
Holger

04.08.2008 - 15:09 Uhr

Ich arbeite schon länger mit Delphi. Dort gibt es für den DB-Zugriff die SQL-Direct Komponenten, die ich persönlich einfach genial finde.

Gibt es für das Visual Studio auch entsprechende Komponenten von Fremdanbietern, die den Zugriff auf Datenbank vereinfachen. Das Arbeiten mit den von Haus aus gebotenen Möglichkeiten (SQLCommand, SQLReader usw) geht zwar auch, ist aber meiner Meinung nach nicht gerade komfortabel.

Gruß
Holger

24.07.2008 - 14:21 Uhr

Danke, manchmal ist das Leben doch so einfach 🙂

24.07.2008 - 14:14 Uhr

Gibts eigentlich eine (einfache) Möglichkeit, mit C# die aktuelle Framework-Version zu bestimmen, bzw. eine Liste aller Versionen die installiert sind, zu bekommen.

Gruß
Holger

17.04.2005 - 23:18 Uhr

Geht leider nicht unter dem Compact Framework, wie vieles andere auch.

Ansonsten wärs das gewesen.

Eine Möglichkeit wäre wohl noch, das Binding aller Controls zu löschen (Clear) und
ein neues Binding hinzuzufügen (Add).
Ist zwar umständlich, geht aber wohl.

Gruß
Holger

17.04.2005 - 23:18 Uhr

Geht leider nicht unter dem Compact Framework, wie vieles andere auch.

Ansonsten wars das gewesen.

Eine Möglichkeit wäre wohl noch, das Binding aller Controls zu löschen (Clear) und
ein neues Binding hinzuzufügen (Add).
Ist zwar umständlich, geht aber wohl.

Gruß
Holger

17.04.2005 - 21:59 Uhr

Hallo,
ich benutze den Streamreader unter dem Compact-Framework. Beim Lesen gehen leider die Umlaute verloren.
Leider gibts die Encoding-Property nicht und ich bin anscheinend auf UTF-8 Encoding festgelegt.

Hat jemand eine Lösung, wie ich Umlaute lesen kann?

Gruß
Holger

15.04.2005 - 09:23 Uhr

Hallo,

ich habe eine Form mit datengebundenen Controls, die über den CurrencyManager aktualisert werden. Funktionert bestens.

Ich möchte nun aber, das bei Änderungen der Position, das Databinding ein bzw. ausgeschaltet werden kann. Kennt das jemand Möglichkeiten?

Hintergrund: Ich muss mehere Zeilen bearbeiten und möchte nicht, das die Anzeige dauernd aktualisiert wird. Dauert nur lange und nervt.

Noch zu erwähnen, das das Ganze unter dem Compact Framework läuft.

Gruß
Holger

13.04.2005 - 23:11 Uhr

Hallo,

ich möchte eine Zahl mit beliebig vielen Nachkommastellen immer als 2-stellige Dezimalzahl in einer TextBox ausgeben.

Beispiel:
34,234243 -> Ausgabe in Textbox. 34,23
1 -> Ausgabe 1,00

Ich versuche es gerade über das OnTextChanged bzw. Lostfocus-Event und der String.Format("{0:F2}", dVal) Anweisung zu realisieren, bin aber gerade am verzeifeln und kriegs nicht hin.

Hat jemand eine Lösung.

Gruß
Holger

11.04.2005 - 09:50 Uhr

Danke für die schnelle Hilfe. Klappt bestens.

Holger

11.04.2005 - 09:07 Uhr

Hallo,
ich möchte eine double-Zahl (z.B. 1,67943) zuerst runden und dann immer mit 2 Nachkommastellen in einer TextBox ausgeben.
Es müsste doch mit "String.Format" gehen, aber irgendwie bekomme ich es nicht hin.

Gruß
Holger

07.04.2005 - 00:38 Uhr

Keine Ahnung,

werde ich mal nachschauen. Danke für den Tip.

Holger

06.04.2005 - 19:51 Uhr

Hallo,
ich habe unter dem Compact Framework folgendes Problem.

Ich habe ein DataGrid und möchte die Spalten formatieren. Z.b. sollen Zahlen rechts ausgerichtet sein, immer 2 Nachkommastellen haben usw.

Unter dem CF finde ich aber ich üblichen Methoden nicht. Nicht mal Paint der DataGridTextBoxColumn-Klasse kann man überschreiben.

Hat jemand noch andere Möglichkeiten oder weiß Rat?

Gruß
Holger

30.03.2005 - 19:02 Uhr

Component.DesignMode ist leider nicht im Compact Framework implementiert. Sonst haste recht.

Ich hatte mal was gelesen, was mit Präprozessordirektiven (#ifdef) ging. Leider fällt es mir aber nicht mehr ein und ich finde es auch nicht mehr.

Gruß, Holger

30.03.2005 - 10:35 Uhr

Hallo,

ich möchte abfragen, ob eine Form zur Design- oder zur Laufzeit geöffnet wird.

Gibts da Möglichkeiten bzw. einen Schalter, den man abfragen kann.

Gruß, Holger

24.03.2005 - 10:11 Uhr

Danke für die schnelle Anwort, obwohl sie mir gar nicht gefällt.

Ab wann gibts das CF 2.0 denn. Das "normale" 2.0 Framework gibt ja mal gerade als Beta.

Gruß
Holger

24.03.2005 - 09:07 Uhr

Hallo,
ich habe folgendes Problem mit dem Compact Framework.

Ich habe eine Form-Basisklasse. Alle weiteren Form sollen von dieser Basisklasse erben.
Sobald ich aber ein neues Form erstelle und dies von der Basisklasse erbt, erhalte ich beim Öffnen des neuen Forms die Fehlermeldung "Fehler beim Laden des Dokuments. Die angebene Umwandlung ist ungültig". Und das Fenster wird dann natürlich nicht angezeigt. Beim "normalen" Framework erscheint diese Fehlermeldung nicht und alles funktioniert.

Gruß, Holger

Code:

Basisform

public class FormBasisDaten : System.Windows.Forms.Form
{

public FormBasisDaten()
{
InitializeComponent();
}

protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}

private void InitializeComponent()
{ }
}

Neues Form

public class frmTest1 : FormBasisDaten
{
...........
}

21.03.2005 - 21:51 Uhr

Hallo,

ich entwickle eine Datenbank-Anwendung unter Windows CE. Leider finde keine datengebundenen Steuerelemente (nur DataGrid). Alle Vorhandenen unterstützen kein Data Bindung.

Sind diese unter WinCE generell noch nicht vorhanden oder finde ich diese nur nicht.

Welche Möglichkeit würde es denn noch geben, Daten anzuzeigen, außer alles mühsam zu programmieren.

Gruß
Holger

17.03.2005 - 16:09 Uhr

Ist keine Studienaufgabe...

Warum, ist die Lösung so einfach bzw. sehe ich den Wald vor lauter Bäumen nicht.
Habe mit XML nicht so die Erfahrung...

Gruß
Holger

17.03.2005 - 15:19 Uhr

Hallo,

ich möchte ein DataSet aus einem XML-File füllen. Die XML-Datei wurde mit einem Delphi-Programm erstellt.

Nach dem Einlesen habe ich mehere Tabellen im Dataset, finde die Daten
aber nicht wieder. Ist die XML-Datei falsch aufgebaut oder was stimmt hier nicht?

Gruß
Holger

########## Source #############
DataSet ds = new DataSet();
ds.ReadXml("DATA_Anrede.xml");

######### XML-Datei #############
<?xml version="1.0" standalone="yes" ?>

  • <DATAPACKET Version="2.0">
  • <METADATA>
  • <FIELDS>
    <FIELD attrname="ANR_ID" fieldtype="i4" />
    <FIELD attrname="TEXT" fieldtype="string" WIDTH="15" />
    </FIELDS>
    <PARAMS CHANGE_LOG="1 0 4 2 0 4 3 0 4 4 0 4" />
    </METADATA>
  • <ROWDATA>
    <ROW RowState="4" ANR_ID="1" TEXT="" />
    <ROW RowState="4" ANR_ID="2" TEXT="Herr" />
    <ROW RowState="4" ANR_ID="3" TEXT="Frau" />
    <ROW RowState="4" ANR_ID="4" TEXT="Herr Dr." />
    </ROWDATA>
    </DATAPACKET>
07.02.2005 - 13:09 Uhr

Hallo,

ich möchte eine Anwendung für einen Handheld-PC schreiben. Auf diesem soll dann unter anderem auch der SQL-Server laufen. Auf einem stationären PC soll auch der SQL-Server (MSDE) laufen.

Ich möchte nun zwischen beiden Servern einen Datenabgleich machen, wofür noch ein Programm geschrieben werden muß.

Welche Möglichkeiten gibt es, zwischen beiden Datenbanken Daten zu übertragen.
Meine Idee ist es, vom stationären PC zwei SLQConnections aufzumachen und so die Daten hin und her zu schaufeln, falls sowas überhaupt möglich ist.

Da ich noch keinen Handheld gekauft habe, welche Eigenschaften sollte der Handheld haben, damit die Übertragung einfach zu programmieren ist bzw. worauf muss ich achten.

Falls schon jemand in diesem Bereich Erfahrungen gemacht hat, wäre ich über jede Antwort dankbar.

Gruß
Holger

03.02.2005 - 00:10 Uhr

Hallo,

wie kann ich die Länge einer Spalte einer Datenbanktabelle (Sql-Server) bestimmen.

In der Tabelle existiert z.B. ein Feld "varchar (35)". Ich möchte dann die 35 haben,
wobei ich eigentlich für alle Feldtypen die Länge haben möchte.

Wo finde ich die Eigenschaften. In der DataColumns-Collection habe ich ich Sie nicht gefunden.

Gruß
Holger

30.01.2005 - 23:13 Uhr

Erstmal Danke für die Antwort.

Ich werde doch mal den SQL-Client antesten.

Der Aufwand ist verträglich, da ich alle DB-Zugriffe in der Basis-Klasse mache, und diese zu ändern sollte nicht so der Aufwand sein.

Gruß
Holger

28.01.2005 - 19:59 Uhr

Erstmal danke für die Antwort.

Der Fehler lag am Parameter im SQL-String. Die Variable duch ein Fragezeichen ersetzt und schon klappte es. Stand irgendwo in der Hilfe.

So gehts....

cmd.CommandText = "Select * from settings where login_name = ?";
cmd.Parameters.Add("@Param_login_name", OleDbType.VarChar, 30).Value ="user"

Zum SQL-Client. Gibts denn irgendwelche Nachteile, wenn man das Ganze über OleDB macht. Meine ganzen Basisklassen sind schon fast fertig und basieren alle auf OleDB. Wäre schon ein Aufwand, dies wieder zu ändern.

Gruß
Holger

27.01.2005 - 15:33 Uhr

Hallo,

zu 1) Der Grund warum ich OleDB nehme ist einfach. Ich hatte mir mit dem Dataform-Wizzard eine Form erstellen lassen, und dort wurde eben die OleDb-Klassen verwendet. Das ist eigentlich der einzige Grund. Hat denn der SqlClient hier Vorteile?

zu 2) Ich habe den letzten Parameter beim "Add" mal weggelassen. Leider mit dem gleichem Fehler.

cmd.Parameters.Add("@Param_login_name", OleDbType.VarChar, 30).Value = "Hallo";

Hast noch eine Idee?

Gruß
Holger

27.01.2005 - 14:35 Uhr

Hallo,
ich habe mit dem OleDbCommand und der MSDE 2000 folgendes Problem.

OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "Select * from settings where login_name = @Param_login_name";

cmd.Parameters.Add("@Param_login_name", OleDbType.VarChar, 30, "login_name").Value = "Hallo";
cmd.Connection = con;
object oResult = cmd.ExecuteReader();

Wenn ich die Abfrage ausführe, kommt die Fehlermeldung "Die Variable <@Param_login_name> muss deklariert sein".

Wenn ich die Abfrage unter Access ausführe, erscheint kein Fehler. Ist beim Sql-Server hier was anders???

Gruß
Holger

25.01.2005 - 16:40 Uhr

Ja, Du hast schon richtig verstanden. Ich benutze in typisiertes Dataset.

Das Dataset und somit auch das XML-Schema kann ích mit dem Wizzard ja noch schnell erstellen. Das wäre leicht.

Das Problem sind die gebundenen Controls in der Form, die ja auch durch den Wizzard erstellt worden sind und auch die automatisch generierten SQL-Statements. Dies müßte ich ja alles manuell nachziehen. Das ist schon Aufwand und auch fehlerträchtig.

Bei Delphi z.B. geht das ganze automatisch. Datasource/-set aktualisieren und schon stimmt alles wieder.

Gibts hier denn keine einfacheren Möglichkeiten bzw. Mechanismen.

Gruß
Holger

25.01.2005 - 10:12 Uhr

Hallo,
ich habe folgendes Problem.

Ich habe den Dataform-Wizzard benutzt, der mir ein Dataset und ein Dataform generiert hat. Das Dataform habe ich natürlich verändert.

Jetzt habe ich in der Tabelle eine Änderung gemacht.
Wie kann ich jetzt dem Dataset und der Form mitteilen, dass sich die Tabelle geändert hat, und das Ganze mit wenig Aufwand. Ich möchte natürlich nicht alles neu erstellen.

Was ist zu tun???

Oder ist die Vorgehensweise mit dem Wizzard generell nicht so gut und gibt es vielleicht andere Wege, das Problem zu lösen.

Gruß
Holger

24.01.2005 - 22:11 Uhr

Danke,

manchmal ist das Leben doch so einfach...

Gruß
Holger

24.01.2005 - 22:01 Uhr

Hallo,

wie kann ich den Klassennamen eines Objektes bestimmen.

z.B: ich habe eine Textbox:

public MyTexBox tb;

Ich möchte nur zur Laufzeit den Klassennamen "MyTextBox" haben.

Gruß
Holger

23.01.2005 - 22:26 Uhr

Besten Dank für die schnelle Antwort.

Hätte ich auch selber drauf kommen müssen. Wahrscheinlich denke ich oft viel zu kompliziert.

Gruß
Holger

23.01.2005 - 22:15 Uhr

Hallo,
ich habe ein gebundenes DataGrid, was auch mit Daten gefüllt wird.
Dummerweise ist die Ansicht nach dem Öffnen des Fenster nicht so, wie ich sie haben will.
Auf der linken Seite erscheint eine Baumstruktur mit allen im Dataset vorhandenen Tabellen. Erst wenn ich eine Tabelle auswähle, werden die Daten angezeigt. Das Dumme ist, dass ich aber nur eine Tabelle habe und die Auswahl der einzigen Tabelle nervt bzw. auch völlig überflüssig ist.
Wo kann ich bestimmen, dass die eine Tabelle sofort angezeigt wird?

Gruß
Holger