
ラベルの文字列の長さが変わったときに、ラベル位置を自動で変更する方法
環境:Visual Studio 2008 (C#)、Windows 7 Professional (x64)
フォーム上にラベルを配置し、AutoSizeをTrue、AnchorをRightに設定すると、ラベルはフォームの右端に位置するように自動で位置を変更してくれます。
しかし、ラベルの内容を今より長い文字列に設定すると、ラベルの内容はフォームの右端をはみ出してしまい、ラベル全体に対してフォームの右端になるように配置してくれません。
いい方法がございましたら、お教えください。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは。
補足頂きました。Anchorは初期配置する際に、フォーム上の何処へ置くか、AutoSizeはテキストに合わせてラベルの幅が自動的に伸びる様になる、と言ったところではないでしょうか。
結局、ラベルの幅が増えても位置は固定のままです。
ラベルを含め、ボタン等のコントロールの素性はチャイルドスタイルのウィンドウを複合して形成されたものです。
色々とウィンドウを取り扱ってきましたが、ウィンドウの幅を自動変更してくれるのはありますが、ウィンドウの位置まで自動変更してくれるものは見た事がないです。
.NetFrameworkには色々と都合の好さそうなプロパティが存在するのですが、設定しても期待した通りにはならない事が良くあります。
No.1
- 回答日時:
こんばんは。
ラベルの右端をフォームの右端に合わせたいと言う事でしょうか。
ラベルにテキストをセットした時に幅を計測して、フォームの右端からはみ出ていたら、ラベルを左に移動して見ては。
当方の環境は、VisualStudio2008, windows xp 32bitです。以下参考程度に。
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//デタラメに長い文字列を作成する
String s = "";
for (int n = 0; n < 300; ++n)
s += n.ToString() + ",";
//ラベルにセット
this.label1.Text = s;
//ラベルの幅がフォームからはみ出たかどうかを確認
int X = (this.label1.Width + this.label1.Margin.Right) - this.Width;
//はみ出ていたので左へ移動
if(X > 0)
this.label1.Location = new Point(-X, this.label1.Location.Y);
}
}
}
この回答への補足
回答ありがとうございます。
ということは、Anchorはラベルの初期幅を基準にしていて、ラベルの幅が変わってしまうと、Anchorが設定されていても位置は自動で変わらない、ということなんですかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
文字数に合わせて、コントロールの幅を設定する方法
Visual Basic(VBA)
-
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
5
Labelコントロールの(左右)余白について
Visual Basic(VBA)
-
6
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
7
Visual Basic.NETの、Form 間での引数の引渡し方法を教えてください。
Visual Basic(VBA)
-
8
GROUP BYを行った後に結合したい。
Oracle
-
9
OpenFileDialogを使った後にもう一度開くと以前のファイルを表示させたい。
Visual Basic(VBA)
-
10
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
11
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
12
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
13
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
14
Labelコントロールに数字を代入する
C言語・C++・C#
-
15
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
16
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
17
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
18
上下の位置揃えについて
Visual Basic(VBA)
-
19
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
20
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TextBox内で違う色の文字を表示...
-
VBAでMultiPageの色の設定方法は?
-
ラベルの文字列の長さが変わっ...
-
コマンドプロンプト
-
Vba テキストボックス文字を右...
-
ウォッチ式の文字数制限について
-
ACCESSのVisibleについて
-
リッチテキストの範囲選択がお...
-
VBSのMsgBoxで文字に色をつけたい
-
VB2005 DataGridviewのチェック...
-
複数のコンボボックスの項目の...
-
リストボックス内の文字の配置
-
エクセルのVBAでコントロール配...
-
worksheetFunctionクラスのVloo...
-
excel vbaでユーザーフォームに...
-
VBAがブレークモードになっ...
-
VBAで多数のプログラムを一つの...
-
VBA シートのボタン名を変更し...
-
VBAのテキストフォームの折り返...
-
VBAからPDFファイルにパスワー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ウォッチ式の文字数制限について
-
eclipseのデバッグ中に変数の値...
-
ラベルの文字列の長さが変わっ...
-
ExcelVBA EnableプロパティがF...
-
Vba テキストボックス文字を右...
-
三菱タッチパネル小数点以下表...
-
ラベルを表示したり非表示にし...
-
VB.NETでラベルの大きさってど...
-
VisualStudioのプロパティが表...
-
ラベル内の文字(Caption)を縦...
-
MATLABのグラフで軸目盛りのフ...
-
ラベルのスクロール(VB)
-
ACCESSのラベル内データに下線...
-
スプレッドシートの列名変更の...
-
(Excel 2003) マクロでワー...
-
Excel VBA ユーザーフォーム内...
-
Notepad++のコメントの色を変え...
-
C#初心者です。チェックボック...
-
Labelのプロパティが変更できな...
-
Acでテキストボックス上に罫線...
おすすめ情報