Laden...

DataGridViewButtonColumn mit 3 Buttons

Erstellt von der-Webdesigner vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.931 Views
D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren
DataGridViewButtonColumn mit 3 Buttons

Hi zusammen!

Da hier gerade die Suche nicht funktioniert und ich auch über Google nicht fündig geworden bin, würde ich gerne wissen ob es möglich ist, mehrere Buttons in einer DataGridViewButtonColumn zu positionieren. Ich würde gerne eine Art Bewertungssystem machen, dass man auf einen der Buttons klickt und entsprechend die Bewertung für diese Zeile geändert wird. Dabei würde ich aber ungerne mehrere Spalten verwenden wollen.

Vielen Dank für eure Hilfe,
Manuel :evil:

X
2.051 Beiträge seit 2004
vor 15 Jahren

http://msdn.microsoft.com/en-us/library/aa730882(VS.80).aspx
bzw. google: custom datagridviewcolumn

bei ms gibt es mehrere beispiele dafür

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Dankeschön!

Ich hab mir jetzt alle Artikel mehrere Stunden durchgelesen und alles ausprobiert...ich bekomme es leider einfach nicht hin.
Was ich geschafft habe ist die Paint-Methode zu überschreiben und damit dann 5 Buttons darzustellen. Diese sind jetzt aber nicht mehr anklickbar. Der Artikel von Microsoft beschreibt ja wie man Radiobuttons dort einfügt, doch irgendwie ist der total unvollständig, denn der interessante Teil, wo die Radiobuttons erzeugt werden, fehlt leider. Daher komme ich nur bis zu dem Punkt, dass ich verstehe wie es grundsätzlich gedacht ist, aber darüber hinaus weiss ich nicht was genau ich machen soll. Codeproject hat leider auch keine guten Beispiele parat außer einen ColorPicker, der sich aber mit VS2005 nicht öffnen lässt.

Was genau muss ich also tun, damit diese Buttons auch anklickbar sind? Vor allem würde ich die Buttons gerne mit einem Hintergrundbild versehen. Das habe ich mit DrawButton() auch schon geschafft, auch wenn der Button dummerweise immer kurz sichtbar ist. Alternativ könnte ich demnach auch einfach Bilder darstellen, die irgendwie anklickbar sein müssten + ein Mouseover-Event haben müssten, da ich sie beim Mouseover gerne anders darstellen möchte.

Was ich grundsätzlich machen möchte:
5 Sterne nebeneinander, die man anklicken und somit eine Bewertung für diese Zeile geben kann. Heißt wenn ich über den 2. Stern gehe, soll Stern 1 ebenfalls durch eine Hover-Grafik ersetzt werden. Aber das ist denke ich nicht das Problem. Was ich nicht weiss ist, wie ich diese Bilder dann anklicken könnte um dann in meiner lokalen Datenbank den Wert für diese Zeile zu ändern...und eine ImageColumn mit nur einem Bild und dann über den geklickten Pixelwert, falls das irgendwie gehen sollte, fände ich sehr unschön.

Vielen Dank für jegliche Hilfe/Ansätze,
Manuel

5.299 Beiträge seit 2008
vor 15 Jahren

Eine DataGridViewComboBoxColumn kommt nicht in Frage?
Weil prinzipiell könnte die sowas auch leisten (hätte halt keine Sternchen).
Hey, kann man ja sogar ownerdrawn machen, und dann Sternchen reinmalen, wenn einen so schnöde Zahlen stören!

Der frühe Apfel fängt den Wurm.

X
2.051 Beiträge seit 2004
vor 15 Jahren

hallo der-Webdesigner,

mach deine eigene DataGridViewColumn und DataGridViewCell. Beispiele Dafür findest du genug im Web, bei MS oder auch in der MSDN Hilfe

die Beispiele sind kieine fertige Lösungen für dein Vorhaben, aber du kannst dich danach richten bei deiner eigenen Implementierung.

du kannst es auch einfacher machen. einfach die Ereignisse von DataGridView behandeln. CellPaint, CellMouseEnter, CellMouseMove, etc.

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Hey ihr beiden!

Also ich habs jetzt endlich geschafft nach viel rumprobieren, mir eine eigene Klasse für die Cells zu schreiben, habe dabei die Paint-Methode überschrieben und ändere die Sterne indem ich einfach die OnClick-Methode überschrieben habe und dort anhand der Pixel sehe, welcher Stern angeklickt wurde. Nicht sonderlich schön, klappt aber. Nach zich gelösten Problemen stehe ich jetzt vor einem, bei dem ich mir unsicher bin obs einfach nicht lösbar ist oder ob ich etwas falsch mache.

Und zwar tausche ich sobald eine Zeile selektiert wurde die Icons aus mit entsprechendem Hintergrund, da ich bei Transparenz mit PNG Probleme hatte. Soweit auch kein Problem. Ich prüfe in der Paint-Methode ob die Zeile selektiert ist, zeichne den entsprechenden Hintergrundwert und zeichne darüber dann die Grafiken. Jetzt habe ich aber das Problem, dass der andere Farben zeichnet als sie im Original-Bild sind. Das sieht man bei den Sternen, denn deren Hintergrund ist eine andere Farbe als der Hintergrund der Zeile. Liegt das an sowas wie "Websicheren Farben", also dass man beim selber zeichnen von Grafiken nur ne bestimmte Palette hat oder wie?

Zeichnen tu ich die Bilder übrigens über eine ImageList und dann über die Draw-Methode.

Danke für jegliche Hinweise 🙂
Manuel

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Okay, ich hatte es schon fast vermutet, dummerweise nur falsch gesucht und erst gerade gefunden...man kann ganz einfach die Colordepth auf 32Bit stellen.

Lg,
Manuel