2016-03-23 23 views
-1

私はこのプログラムを作って、それがうまくいかないまでうまくいきました。私は、テキストを含むラベルをフォームに追加し、label.Location = new Point(0、yPos)を設定していました。 yPos + = labelHeightを実行します。フォームにラベルを追加するにはどうすればいいですか?

最初は私のラベルが良かったのですが、その間に大きなギャップが見えて、yPosがオーバーフローしてしまったので、私はこの方法を使うことができません。ラベルの場所を設定せずにラベルを次々に追加するのに使用しますか?また、私のレーベルはどんな高さでもあり、たくさんあることがあります。

私はTabPageのコントロールとしてこれらのラベルを追加していました。

+0

20億ピクセルの高さのフォームが合理的にあるかどうかわかりません。代わりに 'Listbox'を使うべきです。 –

+0

@DStanley私はスクロールバーを使用しているので、リストボックスにラベルを追加するにはどうすればいいですか? – Pavel

+0

整数オーバーフローではなく、_form_のオーバーフローを意味しますか? –

答えて

0

が判明、あなたは常に行う必要があります。

this.AutoScrollPosition = new Point(0,0); 

これは、ハンスアンパッサンのおかげで働きました。

0

(あなたがそもそもあまりにも多くのラベルを追加しようとすることができるという事実を過ぎてみると)

あなたが複数のコントロールを追加するためのTableLayoutPanelを使用する場合があります。 https://blogs.msdn.microsoft.com/jpricket/2006/04/05/winforms-autolayout-basics-tablelayoutpanel/

私は、これはあなたが明示的にパネル内のすべてのもの、のみパネル自体を配置する必要がない方法でその

Table.Controls.Add(new Label() { Text = "textHere", Anchor = ... etc}; 

のような何かに実行できる方法であると考えています。

あなたが求めていることを実行する方法はおそらくいくつかあります。私の一部の研究では、この方法が一般的に正しい方法であることがわかりました。

残念ながら、私は現時点でこれをテストすることはできませんが、正しい軌道に乗せることができます。

0

あなたは何とかyPos値をあふれているという主な問題を無視しています。したがって、yの位置を設定するロジックに欠陥があるか、WAYを1つのフォームに多くのデータを表示しています。私の大型32インチモニターは2,500 X 1,600の解像度で動作します。 int(最大y値)の最大値は2,147,483,647です。その解像度で130万ページを超えるデータをスクロール可能なフォームですら。私がデータの1つの「スクリーン」を処理することができる場合そのフォームのすべてのラベルを消費するには373時間(15.5日)かかります。

ではなく、で、これを使用すると、1つのフォームのデータ量を管理可能な量に減らすことができます。フィルタリング、検索、並べ替え、ページングなどを見て、データの量を管理可能なレベルにする必要があります。それ以外の場合は書き込み専用メモリです。あなたはそれを表示していますが、それを合理的に使用することはできません。あなたは自動スクロールがtrueに設定されているフォームに物事を追加するとき

+0

実際にあなたは正しいかもしれませんが、あまりにも多くのデータがないので、私は何もあふれさえしていないかもしれませんが、なぜ私のラベルの間に突然大きなスペースがあるのか​​理解できません。私はちょうどそのコードの周りに "チェック{}"を書いて、それは例外を投げなかったので、私はそれが何か他のものだと思っています.. – Pavel

+0

私はデバッガでそれを実行し、各ラベルの間にスペースが広がっていますか?ラベルの高さに_加えてyPosを自分自身に戻しているのでしょうか? (たぶん 'yPos + = yPos + labelHeight'?) –

+0

ああ、いいですね、多分それは私がクロススレッド操作をしているからでしょうか?私はスレッドではあまりよくありません。私がyPosを自分自身に追加していたのであれば、それもやはりうまくいかないでしょう。それはしばらくの間は大丈夫だから、それはベルツェルクに行くから。コードは次のとおりです:http://ideone.com/EXQRHf。 – Pavel

関連する問題