• ベストアンサー

Labelコントロールの(左右)余白について

最近になってMicrosoft Visual Basic 2008 (ProfessinaolEdition)を触り始めたばかりです。 「Windowsフォームアプリケーション」で作成しています。 Labelコントロールって、TextBoxと比べて、コントロール内(左右)に少し余白がありますよね?Paddingプロパティを0にしてもこの余白はそれ以上小さくなってくれません。 これを、TextBoxと同じぐらいのギリギリ右に寄せて表示することはできないものでしょうか。 それをやろうとすると、Labelを2つ重ねたり、またはカスタムコントロールを作る等の方法しかないでしょうか。 それとも、私が何か凄い勘違いや見落としをしているのでしょうか?? ご指摘いただけるか、或いは回避方法等をご存じの方、おられましたらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

よっぽど特殊な意味がない限り、私は重ね気味にしますけどね。 1ミリ程度で寄せたい理由は何かあるのでしょうか。

imaoka0770
質問者

お礼

入力可の項目と入力不可(表示のみ)の項目があり、それらをテキストボックスとラベルにして縦に並べた時に数字が(縦に)揃わないので視覚的にちょっと気になるというか、何とかならないかなぁと思って聞いてみました。 ラベルでなくテキストボックスを使うと、使用不可(Enabled=False)とすると文字色が固定になったり使用可とするとフォーカス制御や入力制御をしなければいけない等、若干の面倒が発生するので出来れば避けたかったんですが、そういうものなら仕方ないですね。 取り敢えずテキストボックスを使うことにします。 ありがとうございました。

その他の回答 (1)

  • camputer
  • ベストアンサー率64% (22/34)
回答No.1

 こんばんは.  ちゃんと質問を理解できていないかもしれませんけど, コントロールの形であれば次のようにして変形することができますよ. http://dobon.net/vb/dotnet/form/formregion.html  (↑非常にためになるいいページです) 試しにLabel1用に作成してみました. Dim X左 As Integer = 0 : Dim X右 As Integer = X左 + Label1.Size.Width Dim Y上 As Integer = 0 : Dim Y下 As Integer = Y上 + Label1.Size.Height Dim 減右 As Integer = 7 : Dim 減左 As Integer = 7 : Dim 減上 As Integer = 7 : Dim 減下 As Integer = 7 Dim myArray As Point() = {New Point(X左 + 減左, Y上 + 減上), _                  New Point(X右 - 減右, Y上 + 減上), _                  New Point(X右 - 減右, Y下 - 減下), _                  New Point(X左 + 減左, Y下 - 減下)} Dim path As New System.Drawing.Drawing2D.GraphicsPath() path.AddClosedCurve(myArray, 0.00001F) Label1.Region = New Region(path)  上のサンプルで「減~」で始まる名前の変数の値を変更すれば, やりたいことができるのではないかと.  ↑よかったら使ってみてください.

imaoka0770
質問者

お礼

非常にためになります。ありがとうございます。 どうも無理なようなので今回はラベルを使わないことにしました。 この方法もまたやってみたいと思います。

関連するQ&A

  • Labelコントロールに数字を代入する

    開発環境はMicrofoft visual stdio 2005 で開発言語はC#を使い、Windousアプリケーションでプログラミングしているのですが LabelにInt型の変数の中身を代入する方法がわかりません。 ソースコードで書くと int a = 10; label1.Text = a;//こうするとInt型をString型に変換できませんと         //で る 参考書などには数字を表示したいならTextBoxを使いなさいとよく書かれているのですが、今のプログラムはユーザーに数字の表示を変えられるといけないので、悩んでいます。 どなたかLabelにInt型を入れる方法か、ユーザーがコントロールできないようなLabelに代わるものを教えていただけないでしょうか>< よろしくお願いします。

  • TabStripコントロールの上にLabelコントロールを乗せるには?

    VB6でTabStripコントロールの上にLabelコントロールを乗せようとしています。 もちろん、コンテナに積んで乗せてやれば乗ることはわかっていますが、コンテナに積まず直接乗せようとすると乗りません。配置した後に最前面を指定しても最前面に出てきません。 FrameなどのコンテナのBorderStyleを無にしてFrameに積んでTabStripに配置するという方法はとりたくありません。 TextBoxやChkeckBoxなどのコントロールは直接乗るのにLabelは乗りません。 これはVB6の仕様なのでしょうか、若しくはコンテナに積まず乗せる方法がほかにあるのでしょうか。

  • カスタムコントロール(ユーザーコントロール)について

    こんにちわ。 例えば、Visual Basic.NETにて、 カスタムコントロール1、カスタムコントロール2・・・etcと、幾つかのカスタムコントロールを作成しておいて、 プログラムの実行時に、フォーム上に配置されたボタン1をクリックすると、フォームにカスタムコントロール1が継承されて配置される、 と言った内容のプログラムを作成したいと考えています。 とはいえ、そのようなことが実際に可能なのかどうかもわかりませんし、そもそもカスタムコントロールの作成方法も理解していません。 そこで、カスタムコントロールの作成からその利用に至るまでを易しく解説してくれているような書籍等がございましたら、教えていただけないでしょうか? よろしくお願いいたします。

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • コントロール配列について、基礎で躓いています。

    Visual Basic 2010でプログラムを作成しています。 今、ラベルが約30個フォームに貼ってあり、そのtextをすべてtextbox1のtextに変更されるようにしたいと考えています。 Label1.text = Textbox1.text Label2.text = Textbox1.text としていけば確実なのでしょうが、簡素化したいのです。 いろいろと検索して心身ともに消耗しきったため、最後の綱として質問させていただきました。 たとえばtextbox1のコードとして Dim btn(30) As Button For i = 1 To 30 btn(i) = Me.Controls("Button" & CStr(i + 1)) btn(i).Text = CStr(i + 1) Next i と書きいれるとNullReferenceExceptionというエラーが出てきてしまいます。 何か書き足りないのでしょうか。何卒よろしくお願いします。

  • カスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

    タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。 よろしくお願いします。

  • 電卓のディスプレイ部分に適したコントロールについて

    フォームアプリケーションで簡易電卓を作っています。 計算するための処理は理解できたのですが、 電卓のディスプレイ部分(??コントロール)に上手く表示させることが出来ません。 本物の電卓のように、フォーム上にある数字のボタンを押した瞬間に、その数字がディスプレイ部分のコントロールに右詰めで表示にしたいのですがどうしたらよいのでしょうか? 例えば、123 ( ひゃくにじゅうさん )を入力するとき、(1)ボタン、(2)ボタン、(3)ボタンを連続でクリックしますが、この時、ディスプレイ部分の右側に、 123 と表示させたいのですが、 実際、自分でチャレンジしたものは、 3 ※ ↑ 1と2が上書きされて、3だけが表示されたり、( label、textBox、richtetextBox使用時 ) 1 2 3 ※ ↑数字が改行され表示されてしまったりします。(listBox使用時) ディスプレイ部分をlistBox、textBox、richtextBox、labelにしてみましたが、どれも失敗しています。 それぞれのプロパティをいじってみたのですが駄目でした。 入力した数字がディスプレイ部分の右側に表示されるだけで、label、textBox、richtextBox、は上書きされ、listBoxは改行されたような表示になってしまいます。 もしかしてこれらはプロパティでの設定では不可能で、それ用のコードを記述する必要があるのかなとも思ったりしていますが、そのコードも検索できずにいるので質問させていただきました。 入力した数字が、上書きされたり改行されたりしないような、コントロールはあるのでしょうか? 知っている方是非アドバイスを頂きたいです。 どうぞよろしくお願いします。 ●使用環境は、以下の通りです。 visualC++ 2010 express .netframework フォームアプリケーション

  • モジュール→コントロールの操作

    VB6で作られたプログラムをVB2008の言語に直しているのですが、あるモジュールから任意のフォーム(Dfrom)上にあるコントロール(Label1)を操作するプログラム?があります [VB6] Dim DForm as form Dform = TextBox1.text DForm!Label1.Caption = Msg これをVB2008で再現しようと思ったのですが、良い方法が見つかりません。 MsgをPublic変数で定義して、フォーム側からLabel1.Caption = Msgとすれば楽にいけるのですが、できるだけ元の形に近い組み方で記述したいので、良い方法をお持ちの方はご享受ください

  • VC++ で TextBoxから、次のコントロールに移動する方法について

    VC++で、フォーム上に複数のTextBoxを配置して、タブインデックスで、次に移動したいTextBoxを設定しました。 最初のTextBoxに入力した後、Tabキーで、次のコントロールに移動することはできましたが、Enterキーで次のコントロールへ移動することはできないのでしょうか? TextBoxのプロパティの設定方法とを教えて下さい。

  • Access Label 手のマウスポインタにしたい

    対象は Access 2000以降です。 Labelコントロールを使用して、IEのリンクのような感じで、 手のマウスポインタにしたいと思っています。 簡単な方法はないでしょうか。 別にLabelコントロールではなくてもいいです。 Webページ風な表現がしたいだけです。 なお、クリックすると、マクロで別のフォームを開きます。 HyperLinkプロパティが使えればいいのですが、マクロを実行 することができずに断念。 LabelのMouseMoveでポインタを変更する、ということも試みましたが、 処理が重くなるのと、もっと根本的に解決する方法があるはずと 思い、質問させていただきました。 HyperLinkのデフォルトの処理が簡単にフックできたりすれば 良さそうなのですが。 よろしくお願いします。

専門家に質問してみよう