14. maj 2009 - 16:44Der 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.
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++) {
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);
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(); }
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.