Avatar billede km2 Nybegynder
14. maj 2009 - 16:44 Der er 4 kommentarer og
1 løsning

Hjælp til at fjerne irriterende blinken i mit program - Hjælp!!!

Jeg har et C# program som kan generere 64 tekstbokse i et panel ved runtime. Så kan brugeren skrive noget tekst i hver tekstboks. Teksten inde i tekstboksene kan også højrestille og venstrestille. Jeg har en knap som kan gemme indstillingerne som jeg har foretaget i mit program og dette gemmes i en tekstfil. Men så har jeg en anden knap som henter indstillingerne fra filen frem igen. Jeg oplever at når jeg indlæser tekstfilen ind i mit program og programmet foretager indstillingerne som var gemt i filen, at så blinker mit panel voldsomt meget som ikke ser pænt ud. Hvordan fjerner man denne blinken?

Har prøvet this.Suspendlayout og this.Resumelayout(false) og this.Doubblebuffered = true. og det reducerer det lidt.
Avatar billede bitmatic Nybegynder
14. maj 2009 - 17:33 #1
SuspendLayout og ResumeLayout bør virke.

Kan vi se noget kode? Måske har du ikke brugt det de rigtige steder.
Avatar billede km2 Nybegynder
14. maj 2009 - 17:51 #2
Ok jeg fandt ud af at den fil jeg gemte i kunne jeg ikke gemme i igen for så ville applikationen blinke da filen indeholdt både noget nyt data og noget gammelt data. Men hvis jeg gemte i en ny fil og ikke overskrev den så var der nærmæst ingen blinken. Men jeg oplever det også når jeg skifter til en ny font på alle mine tekstbokse. jeg ved ikke hvor jeg skal indsætte this.SupendLayout() og this.Resumelayout(false). Her er koden for at skifte font:

private void Command7_Click(object sender, EventArgs e)
        {
            this.SuspendLayout();
            DialogResult dr = fontDialog1.ShowDialog();
            for (int i = 0; i < textbox.Length; i++)
            {
             
                if (dr == DialogResult.OK)
                { 
                 
                    this.textbox[i].Font = fontDialog1.Font;
                    this.DoubleBuffered = true;
                } 
            }
            this.ResumeLayout(false);
        }

og her er koden på de tekstbokse som skal have skiftet font osv:

public Form2()
        {
         
            InitializeComponent();
            this.SuspendLayout();
            this.DoubleBuffered = true;
            System.Windows.Forms.ContextMenu contextMenu1;
            contextMenu1 = new System.Windows.Forms.ContextMenu();
            System.Windows.Forms.MenuItem mnuItemFont;
            mnuItemFont = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem mnuFontColour;
            mnuFontColour = new System.Windows.Forms.MenuItem();
            contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { mnuItemFont, mnuFontColour });
            mnuItemFont.Index = 0;
            mnuItemFont.Text = "&Font";
            mnuFontColour.Index = 1;
            mnuFontColour.Text = "&Font Colour";
            mnuItemFont.Click += new EventHandler(mnuItemFont_Click);
            mnuFontColour.Click += new EventHandler(mnuFontColour_Click);
            for (int a = 0; a < textbox.Length; a++)
            {
                textbox[a] = new TextBox();
                textbox[a].Text = "Text" + a.ToString();
                textbox[a].Size = new System.Drawing.Size(64, 13);
                textbox[a].Visible = true;
                textbox[a].BorderStyle = BorderStyle.None;
                textbox[a].Name = "TextBox" + 1;
                textbox[a].ContextMenu = contextMenu1;

                if (a <= 7)
                {
                    textbox[a].Location = new Point((58 + (a * 75)), 207);
                }
                if (a > 7 && a < 16)
                {
                    textbox[a].Location = new Point((-542 + (a * 75)), 217);
                }
                if (a > 15 && a < 24)
                {
                    textbox[a].Location = new Point((-1142 + (a * 75)), 261);
                }
                if (a > 23 && a < 32)
                {
                    textbox[a].Location = new Point((-1742 + (a * 75)), 271);
                }
                if (a > 31 && a < 40)
                {
                    textbox[a].Location = new Point((-2342 + (a * 75)), 315);
                }
                if (a > 39 && a < 48)
                {
                    textbox[a].Location = new Point((-2942 + (a * 75)), 325);
                }
                if (a > 47 && a < 56)
                {
                    textbox[a].Location = new Point((-3542 + (a * 75)), 369);
                }
                if (a > 55 && a < 64)
                {
                    textbox[a].Location = new Point((-4142 + (a * 75)), 379);
                }
                Picture1.Controls.Add(textbox[a]);
            }
            comboLabel.SelectedIndex = 1;
            Combo6.SelectedIndex = 0;
            txtRight.Text = Convert.ToString(0);
            txtTop.Text = Convert.ToString(0);
            cboMess.SelectedIndex = 0;
            this.ResumeLayout(false);
Avatar billede aaberg Nybegynder
15. maj 2009 - 08:30 #3
Jeg tror du skal sætte SuspendLayout på textboxene.

prøv:

public Form2()
        {
       
            InitializeComponent();
            //this.SuspendLayout();
            this.DoubleBuffered = true;
            System.Windows.Forms.ContextMenu contextMenu1;
            contextMenu1 = new System.Windows.Forms.ContextMenu();
            System.Windows.Forms.MenuItem mnuItemFont;
            mnuItemFont = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem mnuFontColour;
            mnuFontColour = new System.Windows.Forms.MenuItem();
            contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { mnuItemFont, mnuFontColour });
            mnuItemFont.Index = 0;
            mnuItemFont.Text = "&Font";
            mnuFontColour.Index = 1;
            mnuFontColour.Text = "&Font Colour";
            mnuItemFont.Click += new EventHandler(mnuItemFont_Click);
            mnuFontColour.Click += new EventHandler(mnuFontColour_Click);
            for (int a = 0; a < textbox.Length; a++)
            {
                textbox[a].SuspendLayout();
                textbox[a] = new TextBox();
                textbox[a].Text = "Text" + a.ToString();
                textbox[a].Size = new System.Drawing.Size(64, 13);
                textbox[a].Visible = true;
                textbox[a].BorderStyle = BorderStyle.None;
                textbox[a].Name = "TextBox" + 1;
                textbox[a].ContextMenu = contextMenu1;

                if (a <= 7)
                {
                    textbox[a].Location = new Point((58 + (a * 75)), 207);
                }
                if (a > 7 && a < 16)
                {
                    textbox[a].Location = new Point((-542 + (a * 75)), 217);
                }
                if (a > 15 && a < 24)
                {
                    textbox[a].Location = new Point((-1142 + (a * 75)), 261);
                }
                if (a > 23 && a < 32)
                {
                    textbox[a].Location = new Point((-1742 + (a * 75)), 271);
                }
                if (a > 31 && a < 40)
                {
                    textbox[a].Location = new Point((-2342 + (a * 75)), 315);
                }
                if (a > 39 && a < 48)
                {
                    textbox[a].Location = new Point((-2942 + (a * 75)), 325);
                }
                if (a > 47 && a < 56)
                {
                    textbox[a].Location = new Point((-3542 + (a * 75)), 369);
                }
                if (a > 55 && a < 64)
                {
                    textbox[a].Location = new Point((-4142 + (a * 75)), 379);
                }
                Picture1.Controls.Add(textbox[a]);
            }
            comboLabel.SelectedIndex = 1;
            Combo6.SelectedIndex = 0;
            txtRight.Text = Convert.ToString(0);
            txtTop.Text = Convert.ToString(0);
            cboMess.SelectedIndex = 0;
            //this.ResumeLayout(false);
            for (int a = 0; a < textbox.Length; a++)
            {
              textbox[a].ResumeLayout();
            }
Avatar billede km2 Nybegynder
22. maj 2009 - 14:00 #4
tak det virker bedre
Avatar billede aaberg Nybegynder
25. maj 2009 - 10:25 #5
Så smider jeg et svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester