09. februar 2006 - 13:36
Der er
6 kommentarer og 1 løsning
Nedarvning af control
Jeg har lavet en UserControl, som jeg gerne vil nedarve fra i en anden userControl. Men det fungerer vist ikke. I nummer 2 control har jeg blot skrevet: public class NedarvetControl : FirstControl1 er dette nok? Det ser lidt sådan ud i designview, for der er nedlig et ikon, som ser vellykket ud. Men selve designviewet er ikke en form eller lign.. Det er blot et stort guligt vindue. Det ligner en fejl. En anden ting er, at jeg gerne vil tilføje en Regular Expressions på nedarvningen. Hvordan gøres dette egentlig?
Annonceindlæg fra Thales
09. februar 2006 - 15:17
#1
har du et kald til base konstruktøren i den nedarvede? public NedarvetControl(): base() { bla bla }
09. februar 2006 - 16:08
#2
Jeg har lavet dette: public class NedarvetControl : CustomControl1 { private System.ComponentModel.Container components = null; }
09. februar 2006 - 16:09
#3
...og så noget andet defaultkode inde i klassen selvfølgelig...
10. februar 2006 - 08:09
#4
"Men selve designviewet er ikke en form eller lign.. Det er blot et stort guligt vindue. Det ligner en fejl." Det kommer jo an på hvad din user control er. Hvis det f.eks. bare er en knap, har den jo ikke nogen form at vise den på i design view. Prøv at proppe din user control på en form og se hvad der sker.
10. februar 2006 - 11:13
#5
Koden ser sådan ud for basecontrol: using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace LabelBoxControl { public class CustomControl1 : System.Windows.Forms.Control { public System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Label label1; private System.ComponentModel.Container components = null; public CustomControl1(){ InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if( components != null ) components.Dispose(); } base.Dispose( disposing ); } #region Component Designer generated code private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.textBox1.Location = new System.Drawing.Point(17, 17); this.textBox1.Name = "textBox1"; this.textBox1.TabIndex = 0; this.textBox1.Text = "Skriv her!"; this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); this.label1.Location = new System.Drawing.Point(17, 54); this.label1.Name = "label1"; this.label1.TabIndex = 0; this.Controls.Add(textBox1); this.Controls.Add(label1); } #endregion protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); } private void textBox1_TextChanged(object sender, System.EventArgs e) { label1.Text=textBox1.Text; } } } Sådan for nedarvet control: using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace LabelBoxControl { public class NedarvetControl : CustomControl1 { private System.ComponentModel.Container components = null; public NedarvetControl() : base() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Component Designer generated code private void InitializeComponent() { this.textBox1.Location = new System.Drawing.Point(17, 17); this.textBox1.Name = "textBox1"; this.textBox1.TabIndex = 0; this.textBox1.Text = "Skriv her!"; this.textBox1.Validating += new System.ComponentModel.CancelEventHandler(this.textBox1_Validating); // // NedarvetControl // this.Controls.SetChildIndex(this.textBox1, 0); } #endregion private void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if(sender.GetType()==typeof(TextBox)) { char[] streng=e.ToString().ToCharArray();; for(int i=0; i<streng.Length; i++) { if((int)streng[i]<97||(int)streng[i]>122) { e.Cancel=true; } } } } } } Og sådan for implementeringen: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace LabelBoxTest { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.ColorDialog colorDialog1; private LabelBoxControl.NedarvetControl customControl11; private System.Windows.Forms.Label label1; private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.colorDialog1 = new System.Windows.Forms.ColorDialog(); this.customControl11 = new LabelBoxControl.NedarvetControl(); this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); this.customControl11.Location = new System.Drawing.Point(64, 16); this.customControl11.Name = "customControl11"; this.customControl11.Size = new System.Drawing.Size(152, 216); this.customControl11.TabIndex = 0; this.customControl11.Text = "customControl11"; this.label1.Location = new System.Drawing.Point(88, 72); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(104, 144); this.label1.TabIndex = 1; this.label1.Visible = false; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.label1); this.Controls.Add(this.customControl11); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion [STAThread] static void Main() { Application.Run(new Form1()); } private void Form1_Load(object sender, System.EventArgs e) { } } }
10. februar 2006 - 11:53
#6
Jeg har puttet en ErrorProvider på, men den ser ikke ud til at fungere. Jeg har lidt på fornemmelsen, at systemet ikke kører den sidst nye version af projektet...
19. august 2006 - 17:49
#7
I mangel af bedre lukkes spørgsmålet nu efter frivillig tvang...
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.