Hi sandman
Du kannst den MouseMove Event von der Form fangen. Die Mausebewegung selber zu steuern hört sich absurd an, geht aber, schau mal unter www.codeproject.com, gibt ein Beispielprojekt "Parkmouse".
Gruss,
.unreal
Hallo Golo Haas
Wie merkst du dir, wann die List verändert wurde? Oder refresht du den CurrencyManager nur im Event DataSourceChanged vom DataGridView?
Gruss,
.unreal
Hi Golo Haas
Ich kenn mich auch noch nicht so gut aus mit DataBinding, bin mich erst am einarbeiten.
Guck ma in der Doku nach CurrencyManager.Refresh();
Das habe ich dort gefunden:
private void DemonstrateRefresh(){
// Create an array with ten elements and bind to a TextBox.
string[] myArray= new string[10];
for(int i = 0; i <10; i++){
myArray[i] = "item " + i;
}
textBox1.DataBindings.Add ("Text",myArray,"");
// Change one value.
myArray[0]= "New value";
// Uncomment the next line to refresh the CurrencyManager.
// RefreshGrid(myArray);
}
private void RefreshGrid(object dataSource){
CurrencyManager myCurrencyManager = (CurrencyManager)this.BindingContext[dataSource];
myCurrencyManager.Refresh();
}
Ich versteh das nicht ganz. Unter Remarks steht:
Use the Refresh method when the data source does not support notification when it is changed (for example, if it is an Array).
DataSets müssten eigentlich automatisch refreshed werden, wenn sich da was ändert... Vieleicht brauchst du ein AcceptChanges oder so... Wenn du eine Lösung gefunden hast, wäre ich froh, wenn du diese hier präsentieren würdest 🙂
Gruss,
.unreal
Original von Jacyrio
Hallöchen.Ich hät da mal 4 kleine Fragen zum DataGrid:
Kann man die größen der Spalten definieren? Das heißt, ich hab zwei Spalten, möchte das die eine (weil da nur ne 2 Stellige Zahl drin steht) etwas kleiner ist, die andere dann den Rest ausfüllt (gibts auf nem PDA Bildschirm aus). Und ich will noch mehr Spalten (weil ich die Werte für nen SQL Befehl benötige) einfügen, die ich dann aber unsichtbar machen will (also größe 0 sozusagen) aber ich die Werte trotzdem verwenden kann.
Kann ich eine Eigenschaft / Einstellung machen, dass man als User die Zeilen/Spaltengrößen nicht mehr manuell verändern kann? Im Moment kann ich die größe noch per Stift kleiner bzw. größer machen, das ist eigentlich schlecht.
Gibt es die Möglichkeit, wenn ich auf eine Zeile klicke und danach auf nen Button "Bearbeiten", dass ich die Werte der Zeile auslesen und verwenden kann? Bräuchte sie, wie oben geschrieben, für einen SQL Befehl.
Ich müsste bei jedem aufruf der Tabelle, die Tabelle aktuallisieren, d.h. ich will möchte die Tabelle clearen bevor ich sie aufrufe, weil sonst werden neue D
3.atensätze ja ständig unten dran gepackt und das ist (bei meinem Programm) nicht der Sinn der SacheDanke für die Hilfe im Voraus 🙂
Gruss,
.unreal
Hi Herbivore
Diesen Vorschlag habe ich vorhin mit google gefunden, klappt auch nicht:
lbItems.DataSource = _template.Placeholder.Keys;
An unhandled exception of type 'System.Exception' occurred in system.windows.forms.dll
Additional information: Complex DataBinding accepts as a data source either an IList or an IListSource
Ist ja auch logisch. Aber wie realisier ich ein simple DataBinding? Mit Listbox.DataBindings.Add wüsst ich nicht auf was ich binden sollte. Items ist ja readonly...
Grrr, warum hab ich nur mein Buch auf der Arbeit vergessen 😠
.unreal
Guten Abend
Ich habe ein kleines Problem. Kurz zur Situation: Mein Programm soll in einem Template alle {{Platzhalter}} erkennen. Im Gui sollen anschlhiessend alle diese Platzhalter in einer Listbox erscheinen. Für jeden Platzhalter kann ein Wert gesetzt werden, und anschliessend wieder als eine neue Datei gespeichert werden.
Die Logik habe ich in einer Klasse namens Template realisiert, das war mit einer Hashtable überhaupt kein Problem. Alle gefundenen Platzhalter werden in einer Hashtable gespeichert, wobei der Key der name des Platzhalters ist, und Value der "richtige" Wert.
public class Template
{
private string _template;
private string _parsedTemplate;
private Regex _rgxPlaceholders = new Regex(@"\{\{(?<name>\S+)\}\}");
private Hashtable _placeholders;
//....
public void Replace()
{
_parsedTemplate = _rgxPlaceholders.Replace(_template, new MatchEvaluator(ReplacePlaceholder));
}
private String ReplacePlaceholder(Match m)
{
return _placeholders[m.Groups["name"].Value].ToString();
}
}
Wie man im Code sieht, ist es sehr bequem, mittels der Hashtable die Platzhalter mit den gewünschten Texten zu ersetzen. Nur würde ich nun gerne die gefundenen Platzhalter (Keys der Hashtable) in einer Listbox, bzw. den Value der Hashtable in einer Textbox mittels Databinding anzeigen, und dem Benutzer die Möglichkeit zu geben, die Platzhalter zu füllen. Anscheinend geht Databinding nicht mit Hashtables 🙁
Meine Alternative wäre alles z.B. in eine ArrayList zu packen, und zur "Suche" des richtigen Eintrages mit dem IComparer Interface arbeite. Bevor ich zu dieser Alternative greife, würde es mich wunder nehmen, ob es mit einer Hashtable wirklich nicht möglich ist, oder ob ich nur was übersehen habe.
Danke für eure Hilfe & Gruss,
.unreal
Original von eddieromm
Ich glaube ich muss den zu druckenden Text umwandeln. Aber wie?
mfg
Guck MSDN, da hats Beispiele, wie man Druckt! Grundsätzlich hast du eine weisse Fläche, und musst da drauf zeichnen, ist nicht wirklich schwierig, nur mühsam =)
Guckst du PrintDocument, PrintDocument.PrintPage, PrintPageEventArgs.Graphics, Font usw.
Was klappt eignetlich nicht? Hast dus überhaupt schon versucht? Schreib doch hin, was du gemacht hast, und wo genau dein Problem ist.
.unreal
warum nennst du deine pks unterschiedlich? bei mir heisst der pk immer id
Hi Little_Bird
Guck ma in die Propertys/AssemblyInfo.cs
Gruss,
.unreal
Hallo Herbivore, Svenson & IgG
Ich danke euch allen drei für eure Antworten. Richtig toll, was man hier für professionelle Antworten kriegt! Das hilft mir super weiter! Danke!
Original von herbivore
Sorry dass ich nochmals nachhacke,
Nachhacken möchte ich mir verbitten, aber das du nachhakst, ist ok. 🙂herbivore
wollte es noch editieren, dachte aber "das sieht doch niemand" erwischt herbivore, the all seeing eye 😉
.unreal
edit: danke für die Links, sind gut!
Original von herbivore
Hallo .unreal,Darf ich dich Fragen, warum du View und Controller "normalerweise" nicht trennst? Was ist den Abnormal, bzw. wann trennst du View und Controller?
wenn ich ein Lehrbuchbeispiel programmiere 🙂herbivore
Warum nur dann? Ist es zu aufwendig? Bringt es zuwenig oder unnütze Vorteile? Wenn du nur Lehrbuchbeispiele mit Controller programmierst, dann müsste es ja eigentlich besser sein diese zu trennen und der Grund für das auslassen des Controllers wären wegen knappen Ressourcen? Sorry dass ich nochmals nachhacke, aber die Frage ist mir noch nicht genug beantwortet 🙂 Ich finde es sehr interessant in andere Programmierstiele zu sehen, da lernt man immer wieder neue Tricks. Zudem muss ich mir überlegen, wie ich es an meiner Abschlussprüfung programmieren soll.
Gruss,
.unreal
Hi Herbivore
Danke für deine schnelle Antwort. Ich dachte mir schon, dass es so ist, wollte aber auf nummer sicher gehen 🙂
Darf ich dich Fragen, warum du View und Controller "normalerweise" nicht trennst? Was ist den Abnormal, bzw. wann trennst du View und Controller?
Gruss,
.unreal
Hallo IgB
Ich glaube du hast meine Frage nicht ganz verstanden: Klar kann ich im View das Model immer über den Controller ansprechen. Trotzdem wäre es aber möglich, auf das Model direkt zuzugreifen, was mir überhaupt nicht gefällt.
Das kommt mir vor, als ob man alle Felder public deklariert, jedoch beim Zugriff von aussen sich sagt "das darf ich nicht, darum muss ich ein Property verwenden.". Man deklariert Felder private, damit es unmöglich wird.
Gruss,
.unreal
Hi maik
Drucken geht mit der System.Drawing.Printing.PrintDocument Klasse. In der MSDN-Doku findest du Beispiele.
Die Schriftarten musst du nicht in die Applikation einbinden. Schau dir dazu die System.Drawing.Font Klasse an. Die Schriftarten gehören alle in den Systemordner %WIN_DIR%\Fonts
Gruss,
.unreal
Hallo Community
Ich habe eine Frage bezüglich MVC. Code sagt mehr als tausend Worte 🙂
class View
{
private Controller _control;
private Model _model;
public View()
{
_model = new Model();
_controller = new Controller(_model);
_model.FieldChanged += new EventHandler(_model_FieldChanged);
}
private void _model_FieldChanged(object sender, EventArgs e)
{
//...
}
private void Foo()
{
_control.SetField("morgenstund hat gold im mund"); // das ist oke, da über controller
_model.Field = "bla"; // dass will ich unterbinden, Field sollte eigentlich
// nur über den Controller geändert werden können.
}
}
class Controller
{
private Model _model;
public Controller(Model model)
{
this._model = model;
}
public void SetField(string value)
{
if(value.Length > 2)
{
_model.Field = value;
}
}
}
class Model
{
private String _field;
public event EventHandler FieldChanged;
public String Field
{
get { return _field; }
set { _field = value; /* raise event */ }
}
}
Der Controller und das View müssen beide dasselbe Model kennen. Wenn ich es implementiere wie im obigen Code, dann kann ich im View problemlos direkt auf die Properties vom _model zugreifen, jedoch will ich, dass dies nicht möglich ist, resp. jegliche Interaktionen müssen über den Controler geschehen. Wenn jedoch das View das Model nicht kennt, müsste der Controller die Events vom Model abonieren und anschliessend weiterleiten, was weder Übersichtlich noch Aufwandsakzeptabel (cooles wort 😉) ist.
Gibt es dazu eine Lösung, oder ist das bei MVC einfach so? Ich deklariere Felder auch als Private, dass es schon erst gar nicht möglich ist, auf diese zuzugreifen.
Vieleicht habe ich auch etwas sehr grundlegendes beim MVC-Design-Pattern noch nicht verstanden, wenn das der Fall ist, freue ich mich auf Links/Tipps usw. 🙂
Gruss,
.unreal
ganz nebenbei: Wird eine Installationsdatei vom web "geöffnet", wird diese auch zuerst heruntergeladen (in ein Temporäres verzeichnis). Der Begriff "öffnen" ist nicht 100% korrekt =)
Gruss,
.unreal
Original von progger
Der Link zu SourceForge:
> .
Ist übrigens das von WeifenLuo, also das, das dr4g0n76 gemeint hat. Ist wirklich toll das Teil.
Hi Progger
Ich habe diese DockPanelSuite ausprobiert. Ich brauche dieses Autohide-Dock-dingsbums wie beim Solution Explorer(keine Ahnung wie man das nennt). Die Dockingsuite bietet dieses Feature an, allerdings für mich nicht zufriedenstellend. Windows mit DockingStyle.Float "übermalen" das AutoHideTab 🙁 Zudem gibt es keine Möglichkeit, den Floatingwindows die normale Titelzeile zu geben (mit dem grossen schliessen/maximieren/minimieren). Sowas brächte ich 🙂
Gruss,
.unreal
Sieht lecker aus, hab aber noch keine Erfahrungen damit. Kannst dir ja selber mal die Demo installieren.
Gruss,
.unreal
Hi GNewmann
Zeig mal ein Stückchen Code.
Gruss,
.unreal
Hi GNewman
Ich würde sowas nicht über Enumeratoren lösen.
Über listBox.SelectedItems kommst du an die ausgewählten Objekte ran. Sowas wäre eine Typische Frage für die Doku! Der Name des Property sagt ja schon alles.
Gruss,
.unreal
Hi GNewmann
Ich verstehe dein Problem nicht ganz. Setzte deine DataSource, den ValueMember auf die Id und den DisplayMember auf deinen Landname. Nun kommst du über listBox.SelectedValue automatisch auf die ID des Landes, wobei der User die DisplayValue sieht, sprich den kompletten Namen.
Gruss,
.unreal
Super Idee herbivore!
FireFox > all 🙂
Gibt es überhaupt eine solche funktion à la AcceptChanges()?
Hallo
Ich spiele gerade einwenig mit DataBinding rum, damit ich es anschliessend in einem Projekt verwenden kann, und habe eine Frage.
Leider muss ich mit VB.NET arbeiten, da aber die Klassen diesselben wie bei C# sind, habe ich die Frage trotzdem in diesem Forum gestellt.
private source() As String = {"eins", "zwei", "drei"}
txtFirstName.DataBindings.Add(New Binding("Text", source, Nothing))
so habe ich ein Binding hergestellt. Wenn ich nun source ändere (z.B. in einem Button Click):
source(0) = "0"
source(1) = "1"
source(2) = "2"
dann wird die textbox nicht aktualisiert, erst wenn ich z.b die position des BindingManagers verändere, erscheinen die Zahlen. Habs auch schon mit EndcurrentEdit() versucht, hat auch nicht geklappt.
Eigentlich dachte ich, dass das DataBinding selber die Forms updated, wenn ich die Quelle verändere, warum ist dies hier nicht der Fall?
Gruss,
.unreal
du kannst die dontnetmagic elemente auch im designer verwenden, musst sie lediglich hinzufügen
gruss,
.unreal
Es ist eher umgekehrt: du musst sagen (mit den ColumnStyles) welche Columns angezeigt werden.
Gruss,
.unreal
du musst invokerequired und invoke auf demselben objekt abfragen/ausführen
gruss,
.unreal
welcher programmierer will denn 94mal eine schleife durchgehen, obwohl das nicht nötig ist? Das leuchtet mir nun gar nicht ein. Ist getan, was getan werden muss, dann returnen, alles andere ist gebastel.
Hi motoermaik
Wie 2 Forms untereinander kommunizieren, hat herbivore mit einem Threadlink bereits erklärt. Ein weiteres Stichwort wäre DataBinding.
Gruss,
.unreal
ohne deinen Code angeschaut zu haben: String.Substring ist genau das, was deine Methode machen sollte!
Gruss,
.unreal
Original von herbivore
Aber Regex ist einfach geil. 🙂
*schmunzel* genau so würde ich es auch beschreiben. mit regex bist du der könig im text-parsen 🙂
die "fenster" holen sich ihren lokalisierten-string auch aus einer resx datei, und in diese resx datei kannst du auch einen weiteren datensatz hinzufügen und per ressourcemanager drauf zugreifen.
gruss,
.unreal
spiel mal mit den Formeigenschaften localizable und language. VS bietet sogar im designer multlanguagesupport an!
gruss,
.unreal
Hi Fil
Das funktioniert auch mit dem - Operator! Ist eigentlich auch logishc, dass man einem Datum eine Zeitspanne abziehen kann, jedoch einer Zeitspanne kein Datum!
Gruss,
.unreal
Zeig mal den Code... Was ist denn bild.MainForm.pixel?!
Ich glaube du solltest dich zuerst mal ein bisschen mit den Grundlegenden Dingen von OOP beschäftigen, ansonsten ist es nur gebastel.
Gruss,
.unreal
hi herbivore & ikaros
das splitpanel gehht nicht, ich kann zwar die hintergrundfarbe beim splitpanel ändern, allerdings überdeckt dieses ding gleichzeitig die child-windows. mit dem splitter gehts, aber ich bin irgendiwe nicht zufrieden mit dieser lösung. mal schauen ob ich eine gutes gratis-control finde.
gruss,
.unreal
Hi
DateTime.Subtract liefert ein TimeSpan
Gruss,
.unreal
Original von Noodles
Original von boco25
ich steige auf Visual Studio 2005 um, wollte kurz fragen, ob bezuglich Excel sich was geändert hat?Wenn Du auf die VSTO hinaus willst, ja. Da gibt es Änderungen in der Version 2.0.
Änderungen wäre untertrieben... da gibts haufenweise neue features 🙂
Hallo
Kann mir jemand sagen, wo die Icons, welche z.B. der MS Sql Enterprise Manager für Stored Procedures, Views etc. abgespeichert sind?
Gruss,
.unreal
Hallo Community
Ich designe eben ein GUI für eine Anwendung, und habe ne Frage.
Dieses Panel auf der Rechten seite ist momentan ein Panel (Für diesen Satz könnt ich mir gleich nen Orden verpassen). Nun möchte ich aber, dass man dieses Panel auch resizen kann (in der Breite), es soll aber immer Rechts gedockt bleiben.. Aber wenn ich nen Splitcontainer hinzufüge, dann habe ich diese dunke Fläche für die Child-Windows nimmer. Ich will nur in der Not auf nicht standard Controls zurückgreifen!
Kann mir jemand auf die Sprünge helfen?
Gruss,
.unreal
edit: die img tags funken nicht 🙁 url zum bild: http://www.codevision.ch/gui_draft.jpg
@"(?<key>\w+) = (?<value>\S+)"
Damit du alle Matches kriegst, musst du die Methode Matches (mit s am Ende) Verwenden, die liefert eine MatchCollection, mit der kannst du durch alle Matches durchiterieren.
Gruss,
.unreal
hi morcheba
die string-klasse liefert einige methoden, mit diesen kannst du rausfinden, ob z.b ein " vorhanden ist. ein beispiel wäre indexof, oder substring.
anstatt immer nachzufragen würdest du es lieber selbst versuchen, dieses problem ist einfach lösbar.
gruss,
.unreal
Original von IamTheBug
und ne windows api funktion die ich einfach mit demd ateinamen aufrufe gibts nicht?
ne, glaube ich nicht, aber du darfst sie gerne erstellen 🙂
Warum sagst du das nicht schon im ersten Post? 🙂
der regex wäre dann
@"Das ist ein Wert=\d+"
jetzt ist nur noch die Frage WAS du suchst. Wenn du die Zahl suchst, dann könntest du das \d+ gruppieren mit Klammern. Bsp:
@"Das ist ein Wert=(\d+)"
Gruss,
.unreal