Ich habe gerade diesen Beitrag gefunden, da ich das selbe Problem habe. Nach dem Hinweis von inflames2k wie denn der Standard-Eintrag aussieht, habe ich bei mir nachgeschaut. Ich rufe die Daten für die ComboBoxColumn aus der Datenbank ab.
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "Mitarbeiter";
cmb.Name = "mitarbeiter";
cmb.MaxDropDownItems = 3;
cmb.DataSource = AuskunftListe(AlleMitarbeiterAnzeigen());
cmb.DisplayMember = "Login";
cmb.ValueMember = "Login";
dgAuskunft.Columns.Add(cmb);
In C++ wäre es ja einfach
Klasse2 *test2 = new Klasse2*[5];
und auch dabei wären die Inhalte des Arrays ja noch undefiniert (außer als globale Variable, denn dann wären die Inhalte auch Nullzeiger - C# hat den Vorteil, daß sie immer mit 'null' initialisiert werden).
Hallo Th69,
das hat mir sehr weitergeholfen! Vielen Dank. An das set und get muss ich mich noch gewöhnen Aber das größte Problem war, dass in meiner Vorstellung mit DateTime birthday birthday schon ein Objekt von DateTime ist, und ich nicht zusätzlich noch birthday= new DateTime(...) machen muss.
Grüße,
Erano1
Hallo zusammen,
ist es möglich, die Spalten eines DataGrids mit unterschiedlichen List-Objekten zu binden? Zur Erklärung:
Ich möchte Parameterdaten in unterschiedlichen Listen verwalten. Die Strukur der Parameter ist bei allen Listen gleich, jedoch können sich die Werte darin unterscheiden. Damit man visuell erkennen kann, wo sich diese Werte unterscheiden, möchte ich ein DataGrid nutzen um die Werte gegeneinander darzustellen. Die erste Spalte soll der Name der Parameter sein, die für alle immer gleich sind. Die weiteren Spalten sollen dann jeweils mit einer der Liste gebunden werden.
Reicht es aus, wenn diese Listen in einer "Hauptklasse" gekapselt sind, und man die ItemsSource des DataGrid auf eine Instanz der Hauptklasse zuweist?
Wie muss man in XAML die Zuweisung auf die entsprechenden Listen vornehmen?
Vielen Dank für eure Hilfe
Gruß
Die Mischung von statischen und nicht-statischen Methoden ist bei dieser Klasse nicht zu empfehlen.
Überlege dir, ob es gleichzeitig mehrere MessageBoxen geben kann (dann darfst du aber keine "static MyMessageBox"-Variable benutzen, da diese ja dann immer wieder überschrieben werden würde!). Ansonsten die ganze Klasse 'static' setzen.
Und das 'Dispose' bei dem Button-Click ist auch keine gute Idee...
Die NullReferenceException findest du wohl mit dem Debugger raus.
Wer ist denn so mutig, sich einen komplett unformatierten code durchzulesen?
Und dann noch sowas:
else
//labi[posI][posJ]=1;
return 0; //weg gesperrt
So wird das nix, mein Lieber. Du gehörst //weg gesperrt.
Hallo
Die Datenquelle einer Combobox weist u.a. "/" und "\" -Zeichen auf.
Wir per Mausklick ein solches Element ausgewählt, wird der Text vollständig (=alle weiteren Zeichen nach dem Slash) angezeigt.
Bei der Auswahl per Tastatur werden die Zeichen nach dem Slash jedoch abgeschnitten.
https://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.autocompletemode.aspx
In der MSDN hab ich nun unter Hinweis gefunden, dass dies abhängig vom Betriebssystem ist.
Bedeutet dies nun, dass ich das Abschneiden der Zeichen bei der Auswahl per Tastatur einfach akzepieren muss, oder kann ich es dennoch ermöglichen, dass alle Zeichen angezeigt werden?
Was mach ich falsch und was muss ich tun?
Was du falsch machst ist, dass du Versuchst aus einer Klasse X auf deine Form zuzugreifen. - Das geht nicht und darf auch nicht gehen.
Wieso muss die Klasse auf den Button zugreifen? - Schau dir mal die 3-Schichten-Architektur an.
Deine Klasse darf maximal über Rückgaben bzw. über Events mit dem Form kommunizieren. - Alles was die Form betrifft sollte auch nur im Code-Behind der Form passieren.
Hallo Forum,
ich möchte Datenbankobjekte beschreiben. Wenn ich selbst eine null in der Hand habe, dann möchte ich keine null in das Datenbankobjekt schreiben, weil es dann auf der Datenbankseite explizit eine null ware und nicht die DbNull. Außerdem möchte ich nur eine bestimmte Feldgröße schreiben.
WennNichtNull(DBObjekt.FeldX, WriteAtMax(Data, 20))
Nur wenn Data nicht Null werden maximal die ersten 20 Zeichen aus Data in das Feld DBObjekt.FeldX geschrieben.
Kann ich das irgendwie eleganter und kürzer schreiben? Da gab es doch irgendwelche angeflanschten Funktionen, so dass ich im Source sowas schreiben könnte:
DBObjekt.FeldX = WriteAtMax(Data, 20)
oder:
DBObjekt.FeldX = {Data, 20}
DBObjekt liegt nicht im Source vor. Die Feldgrößen ermittle ich manuell indem ich in die Tabellendefinition im MS SQL Management Studio nachschaue.
Mir reichen ein paar Stichworte, das ich nach Beispielen im Internet sehen kann.
Vielen Dank
Peter
KN4CK3R schrieb:
Jetzt ist wieder alles public nur halt in Wrappern
klar ist es public. aber eben nur als parameter-ersatz.
class xyz
{
void update()
{
var param = new data_update_xyz();
{
param.a = m_foo;
param.b = 3;
//...
}
database.update_xyz( param );
}
}
Mach einen Constructor der den Datenbanktyp (zB eine DataRow) entgegegen nimmt und sich daraus initialisiert. Das könntest du dann noch per internal verstecken.
1. versteckt internal nicht
2. geht das beim update/set aber nicht beim select/get
oder?
KN4CK3R schrieb:
und auf die protected Member kann die Datenbank auch nicht zugreifen.
soll (und darf!) sie ja auch gar nicht; deshalb ists ja protected und nicht public...
die basis-klasse hat im prinzip nur eine aufgabe:
(relevante) änderungen an der tabelle an sich kann ich sofort im code übertragen und der compiler sagt mir dann, ob alles gut ist oder ich was anpassen muss...
@hustbaer:
ich habs bisher zugegebenermaßen nicht komplett gelesen sondern meist nur überflogen; sehe aber nicht, wie das zu meiner frage passt weil da nur die grundsätzliche design-entscheidung diskutiert wird (objekt- oder relationen-bezogen). evtl wurde auch nicht so ganz deutlich, dass ich das ganze nur zwischen objekt und datenbank verwende; mich beim design also schon recht deutlich entschieden habe
ich werds die tage mal komplett lesen; aber heut abend nicht mehr
Bei mir wird das Icon angezeigt, das du dir wünschst.
Ich verwende VS 2015 Express und .NET Framework 4.
Wie sieht denn dein Dialog aus? Kannst du da mal einen Screenshot anhängen?
Ok, habe es nun doch hinbekommen.
Das ist zwar etwas frickelig, aber für den programmatischen Speichervorgang muss ich ja an das Objekt der Zieldatei gelangen. Dieses hole ich mir über das aktive Dokument der Wordapplication:
Document oDocTarget = oDoc.MailMerge.Application.ActiveDocument;
Danach kann ich das über SaveAs2 ohne Datenquelle speichern.
Hallo Experten,
das Ziel ist einer ListView das Verhalten beizubringen wie es von
z.B. Nothon-Commander her bekannt sein dürfte.
Das Problem ist, mit ENTER in ein Verzeichnis wechseln zu wollen und auch
wieder zurück. Beim Wechsel in ein Verzeichnis wird das Problem nicht so
ganz deutlich wie aus einem Verzeichnis heraus. Da im ersten Fall der
selektierte Eintrag die oberste Zeile ist mit ".."
Im anderen Fall kann ich auch das Ursprungsverzeichnis selektieren, es scheint
alles soweit perfekt zu funktionieren.
Das Problem, mit ENTER erhält die ListView den Focus und nicht das angesteuerte
Item. Resultat ist, dass zweimal mit der Pfeiltaste gedrückt werden muss
um die Selektion wirksam zu ändern.
Besonders auffällig beim Herauswechsel in das Übergeordnete Verzeichnis
springt die Selektion beim ersten "Pfeil" -Druck in den ersten ".." Eintrag
hoch.
Jetzt ist der Focus an der richtigen Stelle, das Verhalten ist so aber nicht
gewünscht.
<ListView ... FocusVisualStyle="{x:Null}">
<ListView.InputBindings>
<KeyBinding Command="{Binding FtpLocalDirectory.ChangeDirectoryCommand}" Key="RETURN"
CommandParameter="{Binding ElementName=FtpLocalDirectory, Path=SelectedItem}">
</KeyBinding>
</ListView.InputBindings>
....
</ListView>
Ohne [FocusVisualStyle="{x:Null}"] wird das Problem auch optisch sichtbar.
Es wird nach "ENTER"-Druck eine gestrichelte Linie dem ListView-Rahmen
hinzugefügt.
Das Verhalten sollte ohne Code-Behind realisierbar sein.
Ich stelle die Frage nun nach dem ich 2 Tage versucht habe das Problem zu lösen