C# Anfängerfrage

02/21/2012 10:59 PinkPowerPlant#1
Hallo, ich bin grade dabei C# zu lernen und stecke noch in den Kinderschuhen, wie man sehen kann ;) Also beschränke ich mich derzeit auf Minifunktionen und probiere erstmal aus um alles kennenzulernen. Aber bei dieser Aufgabe komme ich einfach nicht weiter, auch youtube und diverse Tutorials konnten mir dabei nicht weiterhelfen. Evtl könnt ihr mir ja n Tip geben :)

Kurz zusammengefasst, ich habe mir in der Entwurfsansicht 2 RadioButtons und n normalen Button eingeworfen. Wenn einer der beiden RadioButtons checked ist, soll die Zahl 1 oder 2 an die untere Funktion übergeben werden,
klappt aber so gar nicht q.q

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RadioButton_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                int x = id2;
                MessageBox.Show("id");
            }
            else if (RadioButton2.Checked)
            {
                int x = id1;
                MessageBox.Show("id");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.GetElementById("id").InvokeMember("click");
        }
    }
}
Wenn ich aber nun RadioButton 1 oder 2 anklicke, wird der Wert wohl nicht an die untere Funktion übergeben :( also da kommt nicht

Code:
webBrowser1.Document.GetElementById("id1").InvokeMember("click");
oder
Code:
webBrowser1.Document.GetElementById("id2").InvokeMember("click");
bei raus, was mache ich da falsch ? oder ist int die völlig falsche variable ?

Wäre für konstruktive Kritik sehr dankbar,
mfg








edit: Habe nun doch ein Lösung gefunden, allerdings sieht das für mich eher nach amateurhaften Workarroung aus, da ich mich ja nun einfach vor dem Übergeben des Integers gedrückt habe ;)

Code:
        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                webBrowser1.Document.GetElementById("id2").InvokeMember("click");
            }
            else if (RadioButton2.Checked)
            {
                webBrowser1.Document.GetElementById("id1").InvokeMember("click");
            }
        }
gäbe es eventuell eine elegantere Lösung dafür ?
02/21/2012 12:21 xNopex#2
Kurz zusammengefasst:
Das hier:

Ist kompletter Bockmist. Erst die Grundlagen lernen, dann mit dem GUI rumbasteln...

Das hier:

Ist vollkommen legitim.


EDIT: Du wärst im .NET Bereich btw mit deinem Thread hier besser aufgehoben.
02/21/2012 14:25 boxxiebabee#3
Code:
        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                int x = id2;
                MessageBox.Show("id");
            }
            else if (RadioButton2.Checked)
            {
                int x = id1;
                MessageBox.Show("id");
            }
        }
Du kannst in dem selben Event nicht 2 Variablen mit dem gleichen Namen definieren.
Du kannst keinen Text in eine Integer Variable speichern, sondern nur Zahlen.
Wenn du den Wert einer Integer Variable mit der Messagebox ausgeben willst musst du es:
1. Zu einem String konvertieren. (Conver.ToString(), .ToString(), + '')
2. Keine Gänsefüßchen.

So würds richtig aussehen:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RadioButton_Test
{
    public partial class Form1 : Form
    {
        string id;
        public Form1()
        {
            InitializeComponent();
        }

        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                id = "id2";
            }
            else if (RadioButton2.Checked)
            {
                id = "id1";
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.GetElementById(id).InvokeMember("click");
        }
    }
}

Erstmal die Grundlagen lernen!!! Soviele Fehler, in einen so kurzen Code hab ich noch nie gesehen....
02/25/2012 00:31 SmackJew#4
Code:
RadioButton1.Checked
Hat Microsoft jetzt auch schon die Kapselung für obselet erklärt?
02/25/2012 09:30 jacky919#5
Quote:
Originally Posted by SmackJew View Post
Code:
RadioButton1.Checked
Hat Microsoft jetzt auch schon die Kapselung für obselet erklärt?
Nein, man hat in C# die Möglichkeit den Zugriff auf Felder durch Zugriffsmethoden zu steuern. Es sieht lediglich so aus als würde ein direkter Zugriff erfolgen.
02/25/2012 09:30 theredvex#6
Quote:
Originally Posted by Lizzaran View Post
Code:
        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                int x = id2;
                MessageBox.Show("id");
            }
            else if (RadioButton2.Checked)
            {
                int x = id1;
                MessageBox.Show("id");
            }
        }
Du kannst in dem selben Event nicht 2 Variablen mit dem gleichen Namen definieren.
Du kannst keinen Text in eine Integer Variable speichern, sondern nur Zahlen.
Wenn du den Wert einer Integer Variable mit der Messagebox ausgeben willst musst du es:
1. Zu einem String konvertieren. (Conver.ToString(), .ToString(), + '')
2. Keine Gänsefüßchen.

So würds richtig aussehen:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RadioButton_Test
{
    public partial class Form1 : Form
    {
        string id;
        public Form1()
        {
            InitializeComponent();
        }

        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                id = "id2";
            }
            else if (RadioButton2.Checked)
            {
                id = "id1";
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.GetElementById(id).InvokeMember("click");
        }
    }
}
Erstmal die Grundlagen lernen!!! Soviele Fehler, in einen so kurzen Code hab ich noch nie gesehen....
ist es nich ansich der Fehler das die IF function in den Checkbuttons sind? wäre es nicht einfacher nach dem Buttonklick abzufragen welcher von den beiden gecheckt ist und dort durch die IF Button 1 checked -> id1 else -> id2

oder hab ich die funktion gerade missverstanden .. gerade keine IDE vor mir <<
02/25/2012 12:55 Adroxxx#7
#moved
02/25/2012 13:02 boxxiebabee#8
Quote:
Originally Posted by theredvex View Post
ist es nich ansich der Fehler das die IF function in den Checkbuttons sind? wäre es nicht einfacher nach dem Buttonklick abzufragen welcher von den beiden gecheckt ist und dort durch die IF Button 1 checked -> id1 else -> id2

oder hab ich die funktion gerade missverstanden .. gerade keine IDE vor mir <<
Könntest es so auch machen, ich hab nurmal dein Beispiel so weit ausgebessert das es funktioniert.
03/08/2012 01:30 PinkPowerPlant#9
Vielen Dank für die Zahlreichen Rückmeldungen :)

Bis heute war ich im Urlaub und bei den Roaminggebühren / Hotelinternetkosten wollte ich nicht online gehen.

Quote:
Originally Posted by Lizzaran View Post
[code]Erstmal die Grundlagen lernen!!! Soviele Fehler, in einen so kurzen Code hab ich noch nie gesehen....
Ich bin ja grade auch erst am Lernen, evtl. bin ich nicht die cleverste, aber c# lernt man ja auch nicht von heute auf morgen, das Ergebnis von deinem Verbesserungsvorschlag bewirkt das gleiche wie meine Lösung oben. Bekommst aber trotzdem n thx, auch wenn deine Wortwahl nicht freundlich auf mich wirkte ;)

Quote:
Originally Posted by theredvex View Post
ist es nich ansich der Fehler das die IF function in den Checkbuttons sind? wäre es nicht einfacher nach dem Buttonklick abzufragen welcher von den beiden gecheckt ist und dort durch die IF Button 1 checked -> id1 else -> id2<<
Ja, das wäre vermutlich Sinnvoller :D Danke

Quote:
Originally Posted by Adroxxx View Post
#moved
aehmmm... Danke :rolleyes:


edit : Achja ... Keks gegessen, Problem gelöst, war im nachhinein zu simpel, danke an alle, die mir geholfen haben und vorallem an theredvex für den Denkanstoß ;)