Moin
Ich versuche hier eine Bildmap in einer DataGridViewCell darzustellen. Sie soll einen Radiobutton simulieren. Dafür nehme ich mir den RadioButtonRenderer und zeichne mit seiner statischen Methode DrawRadioButton einen derartigen Button in meine Bitmap.
Leider sieht das ziemlich bescheiden aus:
siehe hier: http://www.bilder-hochladen.net/files/g17p-1.jpg
Ich habe eine Linie daneben gemalt, die zeigt, dass Anti-Aliasing bereits eingeschaltet ist und funktioniert.
public class RadioButtonCell : DataGridViewImageCell
{
static Image[] _images = new Image[2];// load up images
public RadioButtonCell()
{
this.ValueType = typeof(bool);
RadioButtonState _rbState = RadioButtonState.UncheckedNormal; // list and pre-init check state.
Graphics gfx;
Bitmap bmp;
for (int i = 0; i <= 1; i++)
{
bmp = new Bitmap(24, 24, System.Drawing.Imaging.PixelFormat.Format32bppArgb); // creating a new bitmap
gfx = Graphics.FromImage(bmp); // and getting graphics object from
gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gfx.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gfx.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
gfx.DrawLine(Pens.Blue, 0, 0, 5, 20);
switch (i)
{
case 0: _rbState = RadioButtonState.UncheckedNormal;
break;
case 1: _rbState = RadioButtonState.CheckedNormal;
break;
}
RadioButtonRenderer.DrawRadioButton(gfx, new Point(5, 5), _rbState);
_images[i] = bmp;
}
}
...
Kann mir jemand sagen, wieso der RadioButtonRenderer nicht auf AntiAliasing bzw. "HighQuality" reagiert? (der Quelltext ist durch diverse Experimente etwas versaut)
Und noch viel interessanter: Kann mir jemand einen Tipp geben, wie ich aus diesen klobigen Dingern ansehnliche RadioButtons bekomme?
Vielen Dank!
Lies doch die Fehlermeldung. Das Problem kommt nicht vom Lese- oder Schreibvorgang. Du probierst auf ein WinForm Control aus einem anderen Thread zuzugreifen. Das ist aber verboten. Themen im Netz gibt es dazu genügend.
Ich nenne mal die folgenden zwei Stichwörter mit Links:
Control.Invoke
Control.BeginInvoke
Damit kannst du eine Methode im Kontext des Threads aufrufen, welcher das Control erstellt hat.
Grüssli
Mh,
meine Frage zielt eher darauf ab, ob es überhaupt möglich ist den Webservice, der mit Forms Authentifizierung gesichert ist, aus einem Programm aufzurufen.
Und wenn ja, wie.
Mfg
hab es hinbekommen, da war anscheinend ein Fehler in der config der sich ganz einfach lösen lies indem ich einfach NET die arbeit machen lies
übrigens stand sogar im _innerException hätte es nur lesen müssen.
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath) as Configuration;
NetConfig customNetSection = new NetConfig();
GeneralConfig customGeneralSection = new GeneralConfig();
customNetSection.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication;
customGeneralSection.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication;
config.Sections.Add("NetConfig", customNetSection);
config.Sections.Add("GeneralConfig", customGeneralSection);
config.Save(saveMode, true);
Na selbstverständlich gibt's da n Event!
Strom weg Computer aus Is doch logisch, oder?
Nein ernsthaft, wie sollte ein Event im Sinne der Frage ausgelöst werden wenn doch der Strom schon gar nicht mehr da ist? Da würdest du verlangen, dass der PC ohne Strom weiterläuft und weiter Daten verarbeitet... Wenn im Auto die Batterie leer ist kannst du doch auch kein Radio hörn
Ja dann ist es gleich wie bei Java, dass nur Membervariablen automatisch initialisiert werden.
Es ist das hier. Dravere hatte es in einem anderen Thread erwähnt. Ich bin eigentlich sehr zufrieden mit dem Buch.
SortedList hat einen Kopierkonstruktor, wenn ich das richtig erkenne.
SortedList <string, myObject> list1, list2;
list1 = my_list_creator();
list2 = new SortedList<string, myObject>(list1);
Es wird immer alles mit Nullbytes vollgekleistert, das erledigt bereits der Allocator.
Wertetypen können gar keinen (userdefinierten) Default-Konstruktor haben.
Die offizielle Begründung von MS ist die, dass die Runtime bei Wertetypen nicht sicher stellen könnte, dass der ctor für Wertetypen auch wirklich in jeder Situation läuft. (Wobei ich nicht verstehe wieso das ein Problem sein sollte, aber naja, das ist die offizielle Begründung)
Mir hat der Wikipedia-Artikel geholfen. Vor allem die neuen Sprachfeatures die C# in einigen Dingen sehr elegant machen gefallen mir und sind dort zu sehen.
MfG SideWinder
LowLevelCopy schrieb:
Geht das vll. auch eleganter?
Vielleicht, aber ohne zusätzliche Informationen kann man dir schlecht helfen. Mir fehlen mindestens diese Informationen:
- Wie kommst du an den IntPtr?
- Wie sieht die Struktur aus?
- Was ist der Kontext? Wieso verwendest du Marshal?
Grüssli
Das steht doch auch im Text von deinem ersten Link:
_dgCars.AutoGenerateColumns = false;
DataGridViewTextBoxColumn makeColumn = new DataGridViewTextBoxColumn();
makeColumn.DataPropertyName = "Make";
makeColumn.HeaderText = "The Car's Make";
DataGridViewTextBoxColumn modelColumn = new DataGridViewTextBoxColumn();
modelColumn.DataPropertyName = "Model";
modelColumn.HeaderText = "The Car's Model";
DataGridViewTextBoxColumn yearColumn = new DataGridViewTextBoxColumn();
yearColumn.DataPropertyName = "Year";
yearColumn.HeaderText = "The Car's Year";
_dgCars.Columns.Add(makeColumn);
_dgCars.Columns.Add(modelColumn);
_dgCars.Columns.Add(yearColumn);
Alternativ mittels einer entsprechenden Schleife.
P.S
ginge das auch mit einer zur laufzeit unbekannten anzahl properties?
Das ergibt keinen Sinn, du meinst wohl eher "zur Laufzeit beliebigen Anzahl Properties" -)
ogrex13 schrieb:
http://gallery.techarena.in/data/504/medium/FIFA_MANAGER_09-2.jpeg
Liste von Objekten im Code, pro Objekt ein DataTemplate, die Buttons schalten das "CurrentItem" durch und ein ContentControl zeigt es an.
oder
Liste von Objekten im Code, ein Grid mit den Steuerelementen welche gegen die Objekt properties bindet, die Buttons schalten das "CurrentItem" durch, das DataContext des Grids bindet gegen das CurrentItem.
ogrex13 schrieb:
http://www.zath.co.uk/wp-content/uploads/2009/11/football-manager-2010-home-screenshot.jpg
TabControl.
Sag am besten genauer was du erreichen möchtest, es gibt immer verschiedene Wege zur Lösung eines Problems.