Habe eine Freikarte zur .NET Devcon am 06./07. Juni.
Siehe http://www.c-plusplus.net/forum/286510
Hat jemand Lust? Falls ja, bei mir melden.
Bedingungen:
Fahrtkosten + Übernachtung sind selbst zu tragen
Außerdem hätte ich gerne einen zusammenfassenden Artikel über die Veranstaltung und die Vorträge
Einfach per Email melden.
Ja das sind 3 Zeilen Auszug aus einem größeren Stück Code.
Da ich mich seit mehreren Tagen mit C++/C# und dem ganzen Quellcode beschäftige, vergisst man allzu oft, seine Fragen ausführlicher zu stellen.
Morgen wird sich ein C++ Erfahrener zu mir gesellen, ich denke wenn er den Code vor sich liegen hat, könnte er das schneller lösen, mal sehen.
THX für die Anteilnahme.
Hmm nein, Windows PE wird als OS für eine Service Disk verwendet... ein paar eigene Tool unter .NET würd ich da gern verwenden. Wenn es nich geht, muss evtl. was in C++ umgesetzt werden.
Hallo,
danach habe ich auch mal gesucht gehabt - bis ich das Buch "Pro .NET 2.0 Windows Forms and Custom Controls in C#" erworben hatte.
Dort ist ein Screenshot und folgender Code dazu drin:
void HatchBrushes_Paint(object sender, PaintEventArgs e)
{
int y = 20;
int x = 20;
Font font = new Font("Tahoma", 8);
foreach (HatchStyle brushStyle in Enum.GetValues(typeof(HatchStyle)))
{
HatchBrush brush = new HatchBrush(brushStyle, Color.Blue, Color.LightYellow);
e.Graphics.FillRectangle(brush, x, y, 40, 20);
e.Graphics.DrawString(brushStyle.ToString(), font, Brushes.Black, 50 + x, y + 5);
y += 30;
if (y + 30 > ClientSize.Height)
{
y = 20;
x += 180;
}
brush.Dispose();
}
font.Dispose();
}
Einfach diesen Code im Paint-Ereignis einer Form (bzw. Panel) ausführen lassen.
(da ich diesen Code jetzt einfach abgetippt habe, könnten also noch kleine Syntaxfehler drin sein
P.S. anstatt "Dispose()" sollte man besser "using(...)" verwenden (aber ich wollte keine weiteren evtl. Klammerfehler oben in den Code einbauen...)
Und über die "Bilder"-Suche im Internet findet man auch einiges, z.B.:
http://www.bobpowell.net/brushesone.htm
http://dobon.net/vb/dotnet/graphics/hatchbrush.html
Okay, noch ein problem: kann man irgendwie die Spielfeldgröße herausfinden, weil die ja je nach anzahl der völker variieren kann??? Oder die entfernung zum rand???
Guten Abend,
man denkt eigentlich man hat es langsam mal drauf, und dann kommt man doch wieder an ein vermutlich ganz triviales Problem, für das ich eure Hilfe brauche. Und zwar nehmen wir mal an, wir haben 2 Models, Customer und Order
public class Customer
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Order
{
public int ID { get; set; }
public DateTime DeliveryDate { get; set; }
public Customer Customer { get; set; }
}
sowie ein View-Model welches jeweils eine Liste von Customer und Order-ViewModels hält:
public class MainViewModel : ObservableObject
{
public ObservableCollection<CustomerViewModel> Customers { get; set; }
public ObservableCollection<OrderViewModel> Orders { get; set; }
public MainViewModel()
{
Customers = new ObservableCollection<CustomerViewModel>();
Orders = new ObservableCollection<OrderViewModel>();
CreateTestData();
}
private void CreateTestData(){ ... }
here the customer viewmodel
public class CustomerViewModel : ObservableObject
{
private Customer _model;
public CustomerViewModel( Customer customer )
{
_model = customer;
}
public int ID
{
get { return _model.ID; }
set { _model.ID = value; NotifyPropertyChanged(() => ID); }
}
public string Name
{
get { return _model.Name; }
set { _model.Name = value; NotifyPropertyChanged(() => Name); }
}
}
und das Order View Model:
public class OrderViewModel : ObservableObject
{
private Order _model;
public OrderViewModel( Order order )
{
_model = order;
}
public int ID
{
get { return _model.ID; }
set { _model.ID = value; NotifyPropertyChanged(() => ID); }
}
public CustomerViewModel Customer
{
get { ... }
set { ... }
}
}
Hat man wie zu sehen ist ein kleines Problem bei bei dem Customer Setter. Der CustomerSetter ist im ViewModel vom Typ CustomerViewModel, im Model, das gewrappt wird, ist das Targetproperty vom Type Customer. Das bedeutet ich kann das so nicht einfach durchreichen.
Habt ihr eine Idee, wie ich das Problem, am liebsten innerhalb des Properties, lösen kann? Bitte beachtet, dass der Customer auch null sein kann. Also ein Suchen in irgendwelchen Listen kommt nicht in Frage.
Greetings.
Hab das nun so gemacht.
Mit String funzte das nicht.
DataRowView Value = (DataRowView)this.bspBindingSource.Current;
MessageBox.Show(Value.Row[1].ToString());
Danke für die Hilfe
Gruß Alex
Womit zeichnest du denn?
Für Fonts sieht Graphics.MeasureString() gut aus (http://msdn.microsoft.com/de-de/library/6xe5hazb(v=VS.80).aspx), für SpriteFonts funktioniert SpriteFont.MeasureString() (http://msdn.microsoft.com/de-de/library/bb464128.aspx).
Ansonsten einfach mal nach anderen MeasureString()-Funktionen suchen: http://social.msdn.microsoft.com/Search/de-DE?query=measurestring&beta=0&ac=8
Allerdings, wie gesagt, passiert genau dann der kommentarlose Abflug. Aber nur, wenn ich die .dll aus der C++-Anwendung laufen lasse
Dann tue eben mit F11 in die C# Dll reinsteppen!
Edit:
Ev. fehlt Dir das: http://www.c-plusplus.net/forum/282645
Girly schrieb:
Gibt es für C# eine Möglichkeit die Ribbon Oberfläche aus Office 2010 zu verwenden?
Ja, versuchs mal mit WPF. Hier wurde das Thema schonmal kurz angesprochen:
http://www.c-plusplus.net/forum/286013
Grüße
Breaker
hustbaer schrieb:
Firefighter schrieb:
Aber mithalten tut der ILSpy noch lange nicht.
Vermutlich.
Für die meisten aber auch vermutlich vollkommen ausreichend.
Das hab ich ja auch nie bezweifelt Ich benutze es auch seit dem ich das mit Reflector gehört habe. Wollte nur dem "genauso gut" etwas den Wind nehmen, weil ich das für nicht ganz korrekt hielt.
Du willst kein Fenster, aber redirectest auch nicht. D.h. er weiß nicht wohin er die Outputs schreiben soll.
Darum heißt der Fehler ja auch: "[url]StandardOut wurde nicht umgeleitet[/url] oder der Prozess wurde noch nicht gestartet."
ShellExecute ist ja auch ausgeschalten.
Schalte einfach das RedirectStandardOutput auf true und fertig. Wenn dich der Output nicht interessiert musst du ihn auch nicht lesen.
Was hat das mit Aero zu tun?
Beachte das wir von Aero effekten Sprechen die unter XP nicht funktionieren. Nicht von den normalen Aero styles.
Aero effekte muss man unter WPF explizit aktivieren (Siehe mein Beispiel) und für XP braucht man ein fallback.
D.h. die WPF Applikationen können bei Windows Vista/7 mit benutzten Aero effekten anders aussehen als unter XP ohne Aero.
Nur wenn du auf Aero Effekte verzichtest und alle Controls selber Styles, nur dann ist es auf allen Systemen identisch. Am sonsten greift bei den normalen Controls das Theming und er lädt die Luna styled Controls bei XP und die Aero styled Controls unter Vista/7. (Und die Classic styles wenn Windows auf Classic gestellt wurde) System nativ halt.
Hallo,
ich habe eine Liste an ein ComboBoxColumn per DataSource angebunden.
Das Problem ist, wenn das gewählte Comboboxitem nicht mehr in der Liste vorhanden ist, und somit nicht mehr in den Items der Combobox vorhanden ist, wird ein Fehler generiert.
Wie kann man das vermeiden?
Danke
Hallo AlexanderKiebler,
zu deiner Eingangsfrage:
du kannst bei der Invalidate-Methode auch einen Bereich angeben, d.h.
Rectangle rect = new Rectangle(x, y, w, h);
Invalidate(rect);
Nun zeichnest du im Paint-Event ganz normal alle Punkte - durch das Clipping wird jedoch nur der Clippingbereich (e.ClipRectangle) wirklich neu gezeichnet.
Danke für eure Antworten
Zumindest bin ich jetzt dem Ursprung des Problems auf die Schliche gekommen. Und zwar liegt es daran, das ich einige Felder im DataGridView auf Visible = false gesetzt habe. Der Grund ist ganz einfach: Über DataBinding lasse ich das GridView füllen, benötige jedoch einige Felder nicht (z.B. Primärschlüssel - ist für meine Benutzer uninteressant und verwirrend).
Jedenfalls bringt der Zugriff auf ein solch unsichtbares Feld eine Fehlermeldung an den Tag. Es sei denn, man clickt vorher einmal auf das DataGridView. Dann klappt alles ganz normal...
Ich kriege das Problem leider nicht in den Griff.
ClearSelection habe ich auch ausprobiert, aber die Felder die ich über DataBinding gebunden habe werden dann nicht geleer. Ich stelle mir das eben so vor, das man auch keinen Eintrag auswählen kann und wenn kein Eintrag ausgewählt ist, dann müssen natürlich auch die gebundenen Felder keinen Inhalt mehr haben.