Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu C# (Standard-Float, radioButton)
Wenn ich eine Variable anlege
Dingle a;
und sie dann initialisieren will mit
a = 1.05;
dann meckert er rum weil 1.05 ein Double ist. a = Convert.ToSingle(1.05); funktioniert natürlich, ist aber umständlich. Geht das auch besser?
Ich habe in das MainWindow Radiobuttons reingezogen. Mit dem Klick auf einen anderen Button will ich den Status vom RadioButton überprüfen. Er meckert aber bei
if (radioButton1.Checked) { teiler = Convert.ToSingle(1.06); }
Fehlermeldung: Error 1 The event 'System.Windows.Controls.Primitives.ToggleButton.Checked' can only appear on the left hand side of += or -=
Schreibe ich
if (MainWindow.radioButton1.Checked) { teiler = Convert.ToSingle(1.06); }
dann findert er auch was zu meckern: Error 1 An object reference is required for the non-static field, method, or property 'WpfApplication1.MainWindow.radioButton1'
Wie greife ich auf den Status vom Radiobutton zu?
1.05f
Hast du PresentationFramework.dll als Referenz hinterlegt?
Hast du PresentationFramework.dll als Referenz hinterlegt?Keine Ahnung. Wo macht man das?
http://lmgtfy.com/?q=visual+c%23+add+references
So nicht.
Hat jemand noch eine vernünftige Idee?
edit: if (radioButton1.IsChecked==true) funktioniert.
Demirug
2010-07-16, 13:41:13
Checked ist das Event das gefeuert wird wenn sich der Zustand ändert. Deswegen ist da auch nur +=/-= zum anhängen/abhängen von Eventhandlern erlaubt.
rad05
2010-07-16, 13:57:04
edit: if (radioButton1.IsChecked==true) funktioniert.
if (radioButton1.IsChecked) reicht.
Expandable
2010-07-16, 15:02:11
if (MainWindow.radioButton1.Checked) { teiler = Convert.ToSingle(1.06); }
dann findert er auch was zu meckern: Error 1 An object reference is required for the non-static field, method, or property 'WpfApplication1.MainWindow.radioButton1'
Ist MainWindow eine Klasse? Wenn ja, must du radioButton1 entweder statisch (static) machen, oder (vorzugsweise) über this.radioButton1 bzw. eine andere gültige Instanz von MainWindow auf das Feld zugreifen.
Wie bereits erwähnt wurde ist "Checked" ein Event, das man nicht auslesen kann. Das erkennst du in Visual Studio daran, dass im Intellisense-Fenster ein kleiner Blitz vor dem Namen angezeigt wird.
Monger
2010-07-16, 16:48:12
Wenn ich eine Variable anlege
Dingle a;
Was ist ein Dingle? Zwitter aus Single und Double? :ugly:
dann meckert er rum weil 1.05 ein Double ist. a = Convert.ToSingle(1.05); funktioniert natürlich, ist aber umständlich. Geht das auch besser?
Ja. 1.05 ist ja ein Literal, und zwar ein Double Literal. Wenn du das explizit als Single kennzeichnen willst, häng hinten ein F (Float) an:
Single a = 1.05F
Fehlermeldung: Error 1 The event 'System.Windows.Controls.Primitives.ToggleButton.Checked' can only appear on the left hand side of += or -=
Wie Demirug und Coda schon gesagt haben: du hast hier das Event des Objekts in der Hand, nicht das Property. Das Property vom WPF RadioButton heißt "IsChecked".
RattuS
2010-07-16, 18:04:09
Wenn ich eine Variable anlege
Single a;
und sie dann initialisieren will mit
a = 1.05;
float a = 1.05f;
Das .NET betrachtet Dezimalangaben grundsätzlich vom Typ double, daher brauchst du Suffix "f" für Single/float bzw. "m" für Decimal/decimal.
PatkIllA
2010-07-16, 22:40:03
Und dann am besten gleich auf Datenbindung setzen.
Dann muss man sich gar nicht mit irgendwelchen Zuständen von Gui Elementen herumschlagen sondern man läßt sich die Werte direkt in seine Objekte setzen
if (radioButton1.IsChecked) reicht.Nein, es muss mit ==true geschrieben werden.
Monger
2010-07-20, 13:40:21
Nein, es muss mit ==true geschrieben werden.
Hä? Wieso? Das wäre eigenartig, wenn If-Bedingungen keine Properties auswerten könnten.
PatkIllA
2010-07-20, 13:41:26
Hä? Wieso? Das wäre eigenartig, wenn If-Bedingungen keine Properties auswerten könnten.
weil das IsChecked Property nicht von typ bool sondern Nullable<bool> ist.
Damit kann man drei Zustände abbilden.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.