|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Creating an array of labels for use later - annoying problem, please help!Hi,
Got a fun one here. In the Designer file, I have defined my array of labels like this System.Windows.Forms.Label[] periodlabel = new System.Windows.Forms.Label[10]; then at the bottom private System.Windows.Forms.Label[] periodlabel; The reason for this is that I want to be able to create on the between 1 and 10 labels. The problem is this... My source looks like this public partial class lessonplan : Form { public lessonplan(int noperiods) { float periodSize = 100.0F / (float)noperiods; InitializeComponent(); this.lesson.ColumnCount = noperiods + 1; this.lesson.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 120F)); for (int i = 0; i < noperiods; ++i) { this.lesson.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, periodSize)); this.periodlabel[i].Location = new System.Drawing.Point(127 + (117 * i), 2); this.periodlabel[i].Text = "Lesson " + i.ToString(); this.periodlabel[i].AutoSize = true; this.periodlabel[i].Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.periodlabel[i].Size = new System.Drawing.Size(109, 27); this.periodlabel[i].TabIndex = i + 6; this.lesson.Controls.Add(this.periodlabel[i], 0, i); } } The source compiles fine (well, it tells me that Field 'timetabler.lessonplan.periodlabel is never assigned to, and will always have its default value null, but from what I've read, that's ok) , but when I run the application and click on the button which instantates the lessonplan class (it is passing a value happily, if I remove the periodlabel code, everything works find), I get System.NullReferenceException: Object reference not set to an instance of an object I've tried a number of solutions to this (including putting a periodlabel[i] = new Label(); just before the addition of the periodlabel values but within the braces, trying to create dummy instances in the designer source file and a few other tricks found online - nothing worked). Is there a nice, easy way of doing what I want here? TTFN Paul -- Sie können mich aufreizen und wirklich heiß machen! _______________________________________________ Mono-winforms-list maillist - Mono-winforms-list@... http://lists.ximian.com/mailman/listinfo/mono-winforms-list |
|
|
Re: Creating an array of labels for use later - annoying problem, please help!The following works, so I guess you need to work from it to see what the
difference is: private void Form1_Load(object sender, EventArgs e) { int count = 5; Label[] periodlabel = new Label[count]; for (int i = 0; i < count; i++) { periodlabel[i] = new Label(); periodlabel[i].Text = string.Format("Hello {0}", i); } Console.WriteLine(periodlabel[0].Text); } Actually, scratch that, it looks like you are declaring periodlabel twice: > System.Windows.Forms.Label[] periodlabel = new > System.Windows.Forms.Label[10]; > > then at the bottom > > private System.Windows.Forms.Label[] periodlabel; Jonathan Paul wrote: > Hi, > > Got a fun one here. > > In the Designer file, I have defined my array of labels like this > > System.Windows.Forms.Label[] periodlabel = new > System.Windows.Forms.Label[10]; > > then at the bottom > > private System.Windows.Forms.Label[] periodlabel; > > The reason for this is that I want to be able to create on the between 1 > and 10 labels. The problem is this... > > My source looks like this > > public partial class lessonplan : Form > { > public lessonplan(int noperiods) > { > float periodSize = 100.0F / (float)noperiods; > InitializeComponent(); > this.lesson.ColumnCount = noperiods + 1; > this.lesson.ColumnStyles.Add(new > System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, > 120F)); > for (int i = 0; i < noperiods; ++i) > { > this.lesson.ColumnStyles.Add(new > System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, > periodSize)); > this.periodlabel[i].Location = new System.Drawing.Point(127 + (117 * > i), 2); > this.periodlabel[i].Text = "Lesson " + i.ToString(); > this.periodlabel[i].AutoSize = true; > this.periodlabel[i].Font = new System.Drawing.Font("Arial", 18F, > System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, > ((byte)(0))); > this.periodlabel[i].Size = new System.Drawing.Size(109, 27); > this.periodlabel[i].TabIndex = i + 6; > this.lesson.Controls.Add(this.periodlabel[i], 0, i); > } > } > > The source compiles fine (well, it tells me that Field > 'timetabler.lessonplan.periodlabel is never assigned to, and will always > have its default value null, but from what I've read, that's ok) , but > when I run the application and click on the button which instantates the > lessonplan class (it is passing a value happily, if I remove the > periodlabel code, everything works find), I get > > System.NullReferenceException: Object reference not set to an instance > of an object > > I've tried a number of solutions to this (including putting a > periodlabel[i] = new Label(); just before the addition of the > periodlabel values but within the braces, trying to create dummy > instances in the designer source file and a few other tricks found > online - nothing worked). > > Is there a nice, easy way of doing what I want here? > > TTFN > > Paul > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Mono-winforms-list maillist - Mono-winforms-list@... > http://lists.ximian.com/mailman/listinfo/mono-winforms-list _______________________________________________ Mono-winforms-list maillist - Mono-winforms-list@... http://lists.ximian.com/mailman/listinfo/mono-winforms-list |
|
|
Re: Creating an array of labels for use later - annoying problem, please help!Hi,
> Actually, scratch that, it looks like you are declaring periodlabel twice: periodlabel is defined in the Designer source (created by SharpDevelop). It was 5 separate labels, but I changed it to an array of labels. The definition within the class instantation code doesn't matter - the code dies with or without it with the same error. TTFN Paul -- Sie können mich aufreizen und wirklich heiß machen! _______________________________________________ Mono-winforms-list maillist - Mono-winforms-list@... http://lists.ximian.com/mailman/listinfo/mono-winforms-list |
| Free embeddable forum powered by Nabble | Forum Help |