PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu C# (Standard-Float, radioButton)


aths
2010-07-16, 12:58:42
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?

Coda
2010-07-16, 13:01:23
1.05f

Hast du PresentationFramework.dll als Referenz hinterlegt?

aths
2010-07-16, 13:08:23
Hast du PresentationFramework.dll als Referenz hinterlegt?Keine Ahnung. Wo macht man das?

Coda
2010-07-16, 13:10:13
http://lmgtfy.com/?q=visual+c%23+add+references

aths
2010-07-16, 13:20:33
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

aths
2010-07-20, 13:33:23
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.