12 svar
104 visningar
Jayy 117
Postad: 22 maj 2023 13:29 Redigerad: 22 maj 2023 13:30

Kodfel

namespace Grafisk3
{
    public partial class Form1 : Form
    {
        int xkoordinat = 100;
        string val = "";

        public Form1()
        {
            InitializeComponent();
        }
        protected override void OnPaint(PaintEventArgs e)
        {

            Graphics g = e.Graphics;
            Color lila = Color.FromArgb(255, 0, 255);
            SolidBrush lilapensel= new SolidBrush(lila);

            if (val == "vänster")
            {
                xkoordinat = xkoordinat - 5;
                g.FillEllipse(lilapensel, xkoordinat, 200, 50, 50);

            }
            else if (val == "höger")
            {
                xkoordinat = xkoordinat + 5;
                g.FillEllipse(lilapensel, xkoordinat, 200, 50, 50);
            }

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnVänster_Click(object sender, EventArgs e)
        {
            val = "vänster";
            Invalidate();
            
        }

        private void btnHöger_Click(object sender, EventArgs e)
        {
            val = "höger";
            Invalidate();
        }
    }
}


När jag klickar på höger då flyttas cirkeln till höger men om jag sen klickar på vänster då flyttas den till höger och när jag klickar på vänster igen då flyttas den till vänster som vanligt. 

Varför?

Peter_ 470 – Avstängd
Postad: 22 maj 2023 17:16

Kan du visa hela koden (alla 'using' mm)?

anders_k 237
Postad: 22 maj 2023 17:44 Redigerad: 22 maj 2023 17:46

jag är lite allergisk mot att använda ÅÄÖ i metodnamn :)

du kunde också haft en knapptryckhanterare och sen bara kolla vad object är.

Peter_ 470 – Avstängd
Postad: 22 maj 2023 19:15

Anders, han har ju det:
private void btnVänster_Click(object sender, EventArgs e)

anders_k 237
Postad: 22 maj 2023 20:47 Redigerad: 22 maj 2023 20:56
Peter_ skrev:

Anders, han har ju det:
private void btnVänster_Click(object sender, EventArgs e)

Man kan ha samma handler för bägge knapparna :

btn_Click(object sender, EventArgs e)

och sen kolla om sender är vänster eller höger.

void btn_Click(object sender, EventArgs e)
{
  var clicked = sender as Button;
  if (clicked == null)
  {
    return;
  }
  if (clicked.Text = "Vänster") 
  {
  }
  else if (clicked.Text == "Höger")
  {
  }
}
Jayy 117
Postad: 23 maj 2023 12:59

Jag förstår inte. Är inte det hela koden?

Peter_ 470 – Avstängd
Postad: 23 maj 2023 17:07

Vet inte vilken miljö du programmerar i. Kan du berätta?

Jayy 117
Postad: 23 maj 2023 18:30

Jag läser programmering 1 på gymnasiet. Så jag är inte så insatt i det här. vi får göra enkla uppgifter i boken.

Peter_ 470 – Avstängd
Postad: 23 maj 2023 18:56

Ok. Var skriver du in din kod någonstans?

Jayy 117
Postad: 23 maj 2023 22:57

Visual Studio

Peter_ 470 – Avstängd
Postad: 24 maj 2023 07:47 Redigerad: 24 maj 2023 08:53

---

Jayy 117
Postad: 24 maj 2023 11:19

Det är rad 1. Men det kanske finnas på nån mapp på Solution Explorer?

Peter_ 470 – Avstängd
Postad: 24 maj 2023 16:26 Redigerad: 24 maj 2023 16:32

Det finns fundamentala fel i koden så jag föreslår att du talar med din lärare.

Till exempel för att registrera en sk. Event Handler behövs denna kod:
btnLeft.Click += new EventHandler(btnLeft_Click);

Men den koden finns inte i den kod du publicerat.

 

Svara
Close