2011-10-25 104 views
0

当我将控件添加到窗体时,直到我尝试指定大于int16.MaxValue的位置为止,情况良好。控件堆叠在一起。这里是一个被简化,但演示行为的代码:将动态控件添加到自动滚动窗体中

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.AutoScroll = true; 
    int nexttop = 0; 
    for (int i = 0; i < 500; i++) 
    { 
     TextBox t = new TextBox(); 
     t.Text = i.ToString(); 
     t.Multiline = true; 
     if (nexttop > Int16.MaxValue) 
     { 
      bool debug = true; 
     } 
     t.Location = new Point(0, nexttop); 
     t.Size = new Size(100, 77); 
     nexttop += t.Height; 
     this.Controls.Add(t); 
    } 
} 

我想避免programaticaly移动滚动条,因为这将导致时序问题。

你对如何解决这个问题有任何想法吗? TIA。

+0

我运行你的代码,似乎工作正常。问题是什么? –

+0

如果向下滚动到底部,只能看到425个文本框。雅,我会期望至少有一个例外,当我溢出int.MinValue。 – Decker97

+0

但我在最后一个文本框中看到了499 :( –

回答

0

此限制(32767)归因于GDI +。根据Windows版本,我认为可以观察到不同的行为。

相关问题