Toon posts:

[C#] Voorbeeld uit Petzold boek werkt niet (kolommen)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey mensen,

Ik heb weekje geleden MS windows proggen met C# gekocht en ben lekker bezig
gaat allemaal erg lekker tot nu toe :Y)

Alleen nu kom ik aan bij hoofdstuk 4 waar ik bepaalde SystemInformation vandaan haal en deze in kolommen moet zetten.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Oefening_in_tekstuitvoer
{
    /// <summary>
    /// Summary description for SysInfoColumns.
    /// </summary>
    public class SysInfoColumns: Form
    {
        public static void Main()
        {
            Application.Run(new SysInfoColumns());
        }
        public SysInfoColumns()
        {
            Text = "Sys info: Columns";
            BackColor = SystemColors.Window;
            ForeColor = SystemColors.WindowText;
        }
        protected override void OnPaint(PaintEventArgs pea)
        {
            Graphics grfx = pea.Graphics;
            Brush brush = new SolidBrush(ForeColor);
            SizeF sizef;
            float cxCol, y = 0;
            int cySpace;

            sizef = grfx.MeasureString("ArrangeStartingPosition",Font);
            cxCol = sizef.Width;
            cySpace = Font.Height;

            grfx.DrawString("ArrangeDirection: " + SystemInformation.ArrangeDirection,Font,brush,0,y);
            grfx.DrawString(SystemInformation.ArrangeDirection.ToString(),Font,brush,cxCol,y);
            y += cySpace;

            grfx.DrawString("ArrangeStartingPosition: " + SystemInformation.ArrangeStartingPosition,Font,brush,0,y);
            grfx.DrawString(SystemInformation.ArrangeStartingPosition.ToString(),Font,brush,cxCol,y);
        }
    }
}


Vervolgens als ik deze build met Visual Studio.NET

Krijg ik het volgende beeld:

Afbeeldingslocatie: http://members.ams.chello.nl/a.avndoorn/winform.jpg

Nou heb ik de code al een paar keer door gelezen en vergeleken maar kan niets vinden (misschien te lang naar gekeken?)

Kan het zijn dat hij het niet goed uitvoert omdat ik een Beta versie van .NET gebruik?

Ik wil graag verder maar dan weet ik in ieder geval of ik nog meer problemen kan tegen komen of ik moet geen beta versie draaien |:(

Verwijderd

Hij drawed 2 string over elkaar. Probeer is een commentje bij bepaalde regels te zetten. Dan kom je er wel uit denk ik.

hint: grfx.DrawString(SystemInformation.ArrangeStartingPosition.ToString(),Font,brush,cxCol,y);

edit:

Ik kon het niet laten om het even op te lossen:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        protected override void OnPaint(PaintEventArgs pea)
{
    Graphics grfx = pea.Graphics;
    Brush brush = new SolidBrush(ForeColor);
    SizeF sizef;
    float cxCol, y = 0;
    int cySpace;

    sizef = grfx.MeasureString("ArrangeStartingPosition",Font);
    cxCol = sizef.Width;
    cySpace = Font.Height;

    grfx.DrawString("ArrangeDirection: " + SystemInformation.ArrangeDirection,Font,brush,0,y);
    //grfx.DrawString(SystemInformation.ArrangeDirection.ToString(),Font,brush,cxCol,y);
    y += cySpace;

    grfx.DrawString("ArrangeStartingPosition: " + SystemInformation.ArrangeStartingPosition,Font,brush,0,y);
    //grfx.DrawString(SystemInformation.ArrangeStartingPosition.ToString(),Font,brush,cxCol,y);
}

[ Voor 69% gewijzigd door Verwijderd op 05-03-2004 19:28 ]


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Zet je cxCol eens op een hogere waarde. Want het probleem dat je nu hebt is dat je de tekst overelkaar heen aan het schrijven is. Kijk maar, je laatste drawstring moet op dezelfde x-pixel beginnen als de meest rechter Right erboven en dat gaat dus over de tekst heen van de "ArrangeStartingPosition: " + nogwat.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Of nog beter:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
protected override void OnPaint(PaintEventArgs pea)
{
    Graphics grfx = pea.Graphics;
    Brush brush = new SolidBrush(ForeColor);
    SizeF sizef;
    float cxCol, y = 0;
    int cySpace;

    sizef = grfx.MeasureString("ArrangeStartingPosition",Font);
    cxCol = sizef.Width;
    cySpace = Font.Height;

    grfx.DrawString("ArrangeDirection:",Font,brush,0,y);
    grfx.DrawString(SystemInformation.ArrangeDirection.ToString(),Font,brush,cxCol,y);
    y += cySpace;

    grfx.DrawString("ArrangeStartingPosition:",Font,brush,0,y);
    grfx.DrawString(SystemInformation.ArrangeStartingPosition.ToString(),Font,brush,cxCol,y);
}


Wat is de opdracht bij deze code?

Verwijderd

Topicstarter
Cristal je laatste code werkt (eerste niet zoals de opdracht was)

de opdracht was text in 2 kolommen uitlijnen


nou kijk ik 3x naar jouw en mijn code of ik ben ongeloofelijk scheel maar wat heb je nou veranderd? |:(

Verwijderd

Topicstarter
8)7 8)7 8)7 8)7

zie het al 8)7 8)7 :X


+ SystemInformation.ArrangeDirection

stond helemaal niet in het boek 8)7 8)7

smoes: was laat vannacht B)

oh en ik dank u :>

[ Voor 64% gewijzigd door Verwijderd op 05-03-2004 19:47 ]

Pagina: 1