Hallo,
ich möchte von einem DataView ableiten, um dieses durch die ITypedList-Schnittstelle um zusätzliche Eigenschaften zu erweitern.
Zur Frage:
wie kann ich folgendes realisieren?
PropertyDescriptorCollection ITypedList.GetItemProperties(PropertyDescriptor[] listAccessors) {
return ((ITypedList)base).GetItemProperties(listAccessors);
}
Leider implementiert das DataView die Schnittstelle ITypedList nur explizit. Also müsste ich pseudo-code-mäßig die base casten und dann die Methode aufrufen. Das Schlüsselwort base ist aber in diesem Zusammenhang so nicht gültig.
Danke
Gruss
Friedel
Hallo,
obwohl es mir in den Fingern weh tat, habe ich für Holland gestimmt.
Wie die bisher ausfgetreten sind ist vom allerfeinsten. Mir gefällt Offensivfussball und hoffe alleine schon deswegen, dass Holland gewinnt (habe ich das echt geschrieben).
Sollten sich allerdings unsere Kicker doch noch entscheiden, auch solch einen Fussball zu zeigen, war ja durchaus in den letzten Jahren hier und da mal zu sehen, nehme ich meine Stimme für Holland zurück und setze diese auf Deutschland... 🙂
Gruss
Friedel
Die wahrscheinlich mit am meisten gefragte Frage 🙂
[
[FAQ] Warum blockiert mein GUI? ](http://www.mycsharp.de/wbb2/thread.php?threadid=27992)
Gruss
Friedel
Hallo Zebes,
data = new DataSet();
data.ReadXML("filename",XmlReadMode.ReadSchema);
testdata = (TestDataSet)data;
dein DataSet dataSet ist numal kein (typed) DataSet TestDataSet.
Erstell eine neue Instanz von dem typed-DataSet TestDataSet un rufe von diesem die Methode ReadXml(...) auf.
Gruss
Friedel
Du hättest dir 20 Minuten deiner Lebenszeit erspart, wenn du dir nur das Beispiel überhaupt mal angesehen hättest.
Wenn du das getan hättest wären dir sicher sofort die MouseEventArgs ins Auge gefallen.
MouseEventArgs sh.: :rtfm: 🛈 📗
Hallo?
Noch einfacher?
[Ironie]
Poste doch einfach genau deine Aufgabe und Wünsche und ich werde sofort alles unternehmen, um dir so schnell wie möglich ein Programm mit entsprechendem SourceCode zukommen zu lassen. Selbstverständlich würde ich es auch unter deinem Namen direkt an deinen Lehrer/Profressor/Arbeitgeber per Mail senden...
[\Ironie]
umleiten war/ist missverständlich, sorry...
Form f = new Form();
f.KeyPreview = true;
Gruss
Friedel
Hallo msimmerl,
ein KeyPress-Event bekommt immer das Control, welches den Focus hat.
Es gibt für die Form aber die KeyPreview-Eigenschaft, mit welcher du das Event an die Form "umleitest".
Gruss
Friedel
Hallo Th69,
es geht, ist aber nicht ganz so simple:
Gruss
Friedel
Letztendlich ist es aber eine Frage wie man sein Leben einrichtet und welche Prioritäten man setzt. Da ich von Anfang an kein Auto haben wollte, habe ich mein Leben auch entsprechend eingerichtet, dass ich keins brauche. Wenn man sein Leben so einrichtet, dass man ein Auto braucht, dann braucht man eben auch eins. Aber nur deswegen.
Wenn ich sowas höre, stellen sich mir echt alle Nackenhaare hoch, sorry. Ihr Städter seit
also allen Ernstes der Auffassung man käme auf dem Land ohne Auto aus, wenn
man es nur wollte?
Ich musste mit 18 30km (eine Strecke) zu meiner Ausbildung fahren.
Auf der ganzen Strecke geht es durch 5-6 Ortschaften, welche keine 500 Einwohner haben.
Was glaubt ihr wie oft am Tag da ein Bus durchkommt?!
Klar, ich hätte in einem Sägewerk keine 5km weit weg eine Ausbildung machen können
um kein Auto haben zu müssen...
Ich glaube gerade deshalb weil viele Politiker Städter sind, welche KEINE Ahnung
haben wie es ist auf dem Land zu leben (super, wenn ihr mich fragt) und einer
Arbeit nachzugehen, ist diese bodenlose Diskusion über die Pendlerpauschale
überhaupt erst aufgekommen. Kein Mensch vom Land wäre auf die dämliche Idee
gekommen diese abzuschaffen.
Heute fahre ich immerhin noch 28km (eine Strecke) bis zu meinem Arbeitsplatz.
Grob gerechnet lege ich also jeden Tag mehr als 7-8 Euro (Benzin, Versicherung, usw.)
nur für diese Fahrt auf den Tisch. Mit ÖV wären es 8,20 Euro + 20 Minuten laufen.
Darüber hinaus bleibt fahren mit dem Auto nicht aus.
Nur weil eine Firma auf dem Land ansäßig ist, heißt das noch lange nicht,
dass man nicht auch flexibel sein muss.
Das geht an einem Ort, welcher nicht der Arsch der Welt ist (aber man kann den Arsch von hier aus sehen 😄) definitiv nicht ohne Auto.
Gruss
Friedel
Hallo DevHB,
dass geht nur mit einem CodeDomSerializer, welcher deinem Control als Attribut hinzugefügt werden muss. Ist nicht ganz trivial.
Gruss
Friedel
Hallo xxxprod,
ist aber meiner Meinung nach keine Alternative, da der von dir vorgeschlagene Code "nur" die Typen einer Assembly findet. Da impact aber alle aus der Solution haben will, funzt nur der Code so alleine nicht.
Gruss
Friedel
Hallo withewolf,
und Willkommen im Forum.
Als Ansatz:
Nehmen wir an, in deinen ComboBox stehen jeweils folgende Einträge:
Combo1:
Rot <---
Gruen
Blau
Combo2:
Rot
Gruen <---
Blau
Combo 3:
Rot
Gruen
Blau <---
Gewählt sind jeweils die mit Pfeil.
Dann nimmst du nicht den Index, sondern den Wert, also den String und verknüpfst diese. In dem Beispiel kommt "RotGruenBlau" raus.
Mit diesem String "fragst" du die Resource ab.
Image img = Resources.MeineResource.ResourceManager.GetImage("RotGruenBlau");
und du hast deine Images.
Gruss
Friedel
obwohl mir noch Code fehlt, um beurteilen zu können woran es ganz genau liegt
Was würde dir denn da noch fehlen? Das ist alles...
Woher soll man bitte wissen, in welchem Thread die Methode überhaupt aufgerufen wird. Ist die in dem Kommentar genannte Form die MainForm, also Hauptthread, oder eine Form, welche bspw. den Fortschritt des Bearbeitungsthreads anzeigt und somit durchaus in einem anderen Thread erstellt worden kann
zum anderem kann es sein, dass an der stelle überhaupt kein InvokeRequired ist...
Doch 🙂
Schön, hast du dann das mit den Klammern mal ausprobiert ?
Ansonsten könnte evtl. das interessant sein: http://www.codeproject.com/KB/cpp/begininvoke.aspx
Hallo JunkyXL,
obwohl mir noch Code fehlt, um beurteilen zu können woran es ganz genau liegt, fällt mir direkt mal die falsche Klammerung auf:
// Form
if (this.InvokeRequired == true)
{
MethodInvoker2 del = delegate()
{
return new Exception();
};
}
throw (Exception)this.Invoke(del); //sonst kommt er nie an die Codezeile
zum anderem kann es sein, dass an der stelle überhaupt kein InvokeRequired ist (kommt darauf an, in welchem Thread die Form erstellt wurde) und somit die Exception im selben Thread geworfen wird und nicht in dem du ihn erwartest.
Lösen kann man sowas evtl. besser wenn du dir eine in einem Thread geworfene Exception in einer Property des im Thread bearbeiteten Typs "merkst" und diese nach dem beenden des Threads auswertest.
Gruss
Friedel
Hallo Christel,
einfach als Owner der modalen Form die Form angeben, welche die mForm anzeigt.
Gruss
Friedel
Hallo Borat,
und willkommen im Forum.
Ich würde die statischen Methoden gar nicht in die Typen Person und Mitarbeiter packen. Wahrscheinlich würde ich eine Art DBManager schreiben, welcher diese Aufgaben für dich erlegit, also z.B. eine Person mit einer bestimmten ID aus der Datenbank zu holen, oder eben alle Personen auf einmal (/mit einer Abfrage).
Was macht es auch für einen Sinn, einem Typen, welcher in Einzahl benannt ist, Methoden zu geben, welche eine Mehrzahl von Instanzen voraussetzen?
Kennst du alle Personen der Welt, und kannst mir auf Anfrage genau eine bestimmte (ID) nennen? (OK, hinkt etwas (static), aber im Ansatz...)
Gruss
Friedel
//Edit: Fehler über Fehler...
Hallo timmi,
du musst in den einzelen EventHandler Invoke benutzen, sonst gibt es einen Fehler.
Gruss
Friedel
Hallo,
jup kennt wirklich jeder, sehr einfach...
Gruss
Friedel
Ansonsten gibt es ab .Net 2.0 das Event Shown einer Form, welches erst nach dem Anzeigen der Form ausgelöst wird.
Gruss
Friedel
Hallo w0schd,
erstmal willkommen im Forum.
Zur Frage:
Kann es sein, dass du deine Projekte innerhalb der Solution mit SolutionFolder strukturiert hast? Wenn dem so ist, hast du deine Antwort. Visual Studio kann keine Projekte nach UserControls durchsuchen, welche unterhalb eines solchen Ordners liegen.
Gruss
Friedel
Hallo,
ich habe zwar noch nie mit dem Debug-Visualizer gearbeitet, aber an Member, auf welche man nicht zugreifen darf, kommt man IMO nur per Reflection.
Gruss
Friedel
Hallo,
Und selbst wenn es höher entwickeltes Leben geben würde: Mal ehrlich, wenn hier ein Alien vorbeikommt und sich das geschehen auf der Erde anschaut, wird es mit den Kopf (oder was auch immer) schütteln, sich sagen "Wie kann man nur so blöd sein", und wieder wegfliegen.
Das sehe ich mal ganz genau so. Kein Alien wird sich in seine Untertasse setzen und mal spontan auf der Erde vorbei schauen. Die werden uns dann schon eine Weile beobachten und wenn die dann das Chaos von evtl. Jahunderten mit angesehen haben, wären die ja schön blöd hier mit uns Kontakt auf zu nehmen. Vermutlich würden wir deren Wissen stehlen und mit deren Technik erstmal richtig Stunk im All anfangen.
Krieg spielen mit größerer Map...
Gruss
Friedel
Hallo,
achte mal auf den Rückgabewert der Methode, mit welcher du die Datei erzeugst. Wie du dann siehst, ist die Datei nach dem Erstellen geöffnet (Stream existiert) und kann (braucht) nicht erneut geöffnet werden.
Gruss
Friedel
Hallo Hubibi,
nimm evtl. GetCellDisplayRectangle(...) und rechne damit. Den x-Wert der Position bekommst du damit raus. der y-Wert sollte immer 0 sein.
Wenn du mit Größe die Breite einer Spalte meinst, hast du die auch damit, wenn nicht, keine Ahnung, aber ein nicht sichtbarer Spaltenkopf hat nunmal keine Höhe.
Gruss
Friedel
Hallo,
man kann im Visual Studio eigene Macros schreiben (Tools->Macros->Macros IDE).
Leider sieht es so aus, als ob man diese Macros "nur" in VB erstellen kann.
Ist dem so, oder kann man Projekte anlegen, welche dann C# als Programmiersprache verwenden?
Danke
Gruss
Friedel
Hallo Gepro,
TreeViewHitTestInfo info = this.treeView1.HitTest(e.Location);
if (info.Location != TreeViewHitTestLocations.PlusMinus) {
}
Gruss
Friedel
Hallo yngwie,
rumdrehen ?
public class TestKlasse<U> IXyz : where U : IComparable
{
}
Gruss Friedel
Hallo,
wir programmieren, wie die meisten wahrscheinlich im Team und sind natürlich über LAN verbunden. Da wir alle die gleichen Einstellungen für unser jeweiliges VS haben wollen, nutzen wir die Einstellung "Team settings" in den Optionen.
Problem: Einige von uns nutzen ein Notebook. Zuhause, oder sonst wo, ist das Netz natürlich nicht vorhanden und somit nutzt VS wieder die lokalen Einstellungen. Soweit so gut.
Nicht gut:
Verstehe ich hier was falsch, und die Teamsettings sind nicht das was ich brauche, oder geht MS davon aus, dass ein Netz nie nicht erreichbar ist.
Weiß jemand Rat?
Danke
Gruss
Friedel
Hallo DellaRocco,
vermutlich ist die Eigenschaft AutoGenerateColumns noch auf true gesetzt und du bindest eine Datenquelle an das Grid, welche eben genau diese drei "Eigenschaften" besitzt und dadurch das generieren der zusätzlichen Columns auslöst.
Also auf false setzen und
column1.DataPropertyName = "NameDerEigenschaft";
setzen.
Gruss
Friedel
Hallo,
auf die Schnelle gefunden: Using BackgroundWorker to update status (scrollen)
Suchbegriffe: "C#" "Serializer" "Progress"
Gruss
Friedel
hast aber das falsche geschrieben
Jup, hab ich. Meinte eigentlich, wenn der Editor der Zelle den Fokus verliert.
Hab mich wohl zu sehr auf das
verlasse mit der Maus das DataGrid
eingeschossen.
Gruss
Friedel
Hallo dr4g0n76,
super, hätte mir vor ein paar Wochen ständiges Consolen-Getippe erspart. 8o
Trotzdem danke für den Tip.
Gruss
Friedel
Hallo cpetit,
freut mich, wenn du eine Lösung gefunden hast, aber poste diese doch bitte in Zukunft, da jemand anderes diese vielleicht braucht.
Im Leave-Event die Daten zu speichern, also den Editor zu schliessen halte ich für sehr ungünstig. Es ist so, dass wenn das Grid den Focus verliert dieses die noch nicht gespeicherten Daten speichert.
Mir ist kein Programm bekannt, bei welchem dies anders wäre.
Gruss
Friedel
Hallo cpetit,
Was mach ich Falsch?
Das Feld oldRow ist privat, und du kannst deshalb nicht darauf zugreifen.
Das "Überwachungsfenster" funktioniert mit Reflection und kann deshalb den Wert anzeigen.
Gruss
Friedel
Hallo svenson,
Aber eine Menge Code für jede beteiligte Klasse. Kein Klingelkram.
Das stimmt, aber hat man sich an den Mehraufwand gewöhnt, bietet einem die Schnittstelle viele nützliche Eingriffsmöglichkeiten. Nur so als Beispiel: Versionskontrolle verschiedener Versionen des zu (de-)serialisierenden Typs.
Möchte man aber "etwas einfaches" schnell und simple serialisieren ist der XmlSerializer die "bessere" Wahl. Bei komplexen Typen, welche nicht durch einen parameterlosen Konstruktor und getter und setter für alle Eigenschaften verwurschtelt werden sollen, ist ISerializable die Möglichkeit.
Gruss
Friedel
Hallo,
das ist aber nicht alles. Der Serialisierer ist meiner Meinung nach ziemlich dumm. Dem was beizubringen, macht einen wahnsinnig. Es gibt eine Überladung des Konstruktors, welcher du zusätzliche zu erwartende Typen angeben kannst. Wie das sein kann, dass ein Typ unerwartet ist? Keine Ahnung, aber wenn du eine Eigenschaft des Typs Object hast, welche eine Instanz eines Typen, welche eine Instanz eines anderen Typen als Wert hat, kommt das glaube ich vor.
Obwohl hier ja eigentlich alle der Meinung sind, der Formatter sei mist, sehe ich das anders. Im Zusammenspiel mit dem Interface ISerializable ist der Formatter meines Erachtens nach sehr gut.
Volle Kontrolle über de-/serialisieren.
Keine Reflektion und dadurch sehr schnell.
Gruss
Friedel
Hallo herbivore,
Jedenfalls ist es genau die Anforderung.
sehe ich nicht so...
Es geht um folgendes ich habe eine combobox und wenn etwas ausgewählt ist soll eine Datenbank abfrage gemacht werden und wenn nichts ausgewählt ist eine andere abfrage.
ist, und nicht wird 8)
Also wird m.E. noch ein anderes Ereignis genutz, um die Abfrage an die DB zu starten. Ergo müsste man sich im Event immer das "letzte" merken, vorausgesetzt an der Stelle, an welcher die DB-Abfrage gestartet wird, soll nicht mehr die ComboBox abgefragt werden !
Gruss
Friedel
Grundsätzlich habe ich auch nicht über ComboBox.Text gemeckert, sondern über das Event.
Wenn ich allerdings nochmal darüber nachdenke...
Bei einer lokalisierten Form, muss die Abfrage dann schon mit dem ResourceManager erfolgen... ist das toll? Ich denke nicht. Mit SelectedIndex finde ich geht es einfacher. Natürlich kann auch hier ein Problem auftreten, wenn Items verschoben werden.
Demnach ist die sicherste Variante wohl SelectedItem 🙂
Gruss
Friedel
Hallo herbivore,
das SelectedIndexChanged ist in diesem Fall (imho) Mist. Ich muss mir merken, was als "letztes" angewählt wurde und, wie du durchaus richtig bemerkt hast, immer wieder die Instanz-Variable (mein Fehler) aktualisieren. Wo ist da nach deiner Ansicht die Schönheit?
Es reicht völlig aus, wenn man nur ein mal abfragt, eben genau dann, wenn die Abfrage an die DB ausgeführt werden soll, was in der ComboBox steht.
Eine Abfrage an die DB jedesmal dann zu starten, wenn sich der Index der Combo ändert ist wohl mehr als nur Blödsinn, oder?
Reden wir evtl. über das Gleiche aneinander vorbei?
Gerade an der Stelle vielleicht nicht so überzeugend dein Vorschlag, weil ComboBox.Text nie null werden kann. 🙂
Deswegen heißt die Methode ja auch IsNullOrEmpty 🙂 und man muss sich keine Gedanken darüber machen, wann ein String null, oder leer sein kann/ist.
Gruss
Friedel
Hallo Thunderbird0103,
dann müsstet du dir aber in einer Klassenglobalen variablen irgendetwas merken, was dir beim Ausführen der Abfrage als entscheidung hilft, oder du führst bei jedem IndexChanged die Abfrage direkt aus 😦. Beides nicht toll.
Am Rande:
Einen String sollte man (immer) mit String.IsNullOrEmpty auf leer, oder null prüfen, nicht mit s == "".
Gruss
Friedel
Hallo SvenH,
versuch es evtl. mal mit dem Setzen der Position vom BaseStream.
Gruss
Friedel