2012-01-18 7 views
5

私はVB 2008 expressを使用していますが、これはおそらくすべての.net環境に当てはまります。.netでラベルを管理する

私の質問は、何もしないラベルに関係しています。イベントはなく、テキストも変更されません。彼らはテキストボックスやその他のギズモの上に座っているので、ユーザーは各ドヒッキが何であるか知っています。それは彼らの全仕事です。シンプル。コードはまったくありません。 (フォームデザイナで書かれたコード以外。)

私の問題は、彼らのようにのろわ多くがありますです!私のアプリには同じフォーム上に複数のタブがあり、各タブにはたくさんのオブジェクトがあり、それぞれにラベルが付いています。私はそれらの名前をつけることを心配しなかったので、今私はLabel224という名前のラベルを持っています。それは正しい、ラベル224!それはばかげている。プロパティウィンドウを表示すると、ドロップダウンを使用してオブジェクトを名前で選択したい場合があり、スクロールをたくさん強制します。

質問:開発中に名前のないラベル(またはコードで参照されていないオブジェクトの種類)の数を少なくする方法はありますか?

私はもちろんのコードでそれらを読み込むことができます。それは問題ありませんが、ポジショニングが正しいかどうかを調べるためにコードを実行する試行錯誤をせずに、それらをグラフィカルにレイアウトするのは良いことです。

答えて

4

物事のカップル。

はfalseに各ラベルのGenerateMemberプロパティを設定します。

label1.GenerateMember = False 

これは、コードビューのコンボボックスとインテリセンスに表示されてからラベルを防ぐことができます。それ以外

、あなたはあまりにも多くのコントロールを持っています。

あなたは、その場合には、あなたが別のユーザーコントロールへのものの各タブを移動しようとすることができ、その後、あなただけの各タブのための単一のユーザーコントロールをロードしている、「タブ」を述べました。それはコントロールの数を減らすことはありませんが、それはもう少し管理しやすくなります。

ラベルのもう1つの「ジョブ」は、タブ順序で次のコントロールのニーモニック制御のアクティブ化を提供することです。これを使用していない場合は、「不正行為」を試みて、ラベルを一括して取り除き、コンテナのペイントイベントの各コントロールの隣にラベルをペイントします。コントロールのタグプロパティにラベルの表示を配置し、その上にペイントすることができます。必ずしも最大の提案ではありません。

例:あなたは、隣接するラベルとTextBoxコントロールの多くを持っている場合

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint 
    For Each c As Control In Me.Controls 
    If c.Tag IsNot Nothing Then 
     TextRenderer.DrawText(e.Graphics, c.Tag.ToString, Me.Font, _ 
          New Rectangle(c.Left - 100, c.Top, 100, c.Height), _ 
          Color.Black, Color.Empty, TextFormatFlags.VerticalCenter) 
    End If 
    Next 
End Sub 
+0

GenerateMemberが私の答えです。それを信じても、私はそれが何をしているのか分からなかった。ありがとうございました。これでModifiersプロパティについても学びました。私はVB6から来ていて、毎日私はもっと学びます。 – PaulOTron2000

3

、あなたはテキストボックスとラベルの両方で構成され、ユーザーコントロールを作成することができます。外観をカスタマイズするために好きなプロパティを追加できます。

enter image description here

これは、このような一般的なUIパターンですが、私は本当にVSは、このようなコントロールが付属していなければならないと思います。

これは、編集フィールドごとに2つではなく1つのコントロールしか追加できないため、新しいフォームをすばやく作成できることを意味します。ここで

は、私が持っているユーザーコントロールのもう一つの例だ - これはちょうど2つのラベルですが、原理は同じです:

ここ

enter image description here

それが一つの形で複数回使用されている:

enter image description here

フォームには18個のラベルの代わりに、私は私のusercontrolの9つのインスタンスがあります。

+0

私は以前のLOOOOONGを思い出すようですが、MS Accessの初期のバージョンでは、開発者はそのようなフォーム上のテキストボックスにラベルを関連付けることができ、ラベルはテキストボックスが関連付けられたデータベースフィールドの名前にデフォルト設定されています。アクセスに関する多くは望ましいものではありませんでしたが、この機能は理にかなっていました。 – PaulOTron2000

+0

私はVBが同じだったかもしれないという気持ちがあります。しかし、私はVBを15年以上使用していないので、私はそれを想像することができます。 –

+0

VB1以外ではありません。私はVB1をスキップしましたが、VB2からVB6までのすべてのバージョンを使用しました。 (GW Basicで始まり、その日にかなり印象的だったQuickBasicに。)ああ私のgawd私は老いている!そして私はあなたが私がかなり基本的だと言うことができると思います。 – PaulOTron2000

関連する問題