C#ボタンコントロール内で文字の改行

このQ&Aのポイント
  • C#でWindowsアプリケーションを作成しています。ユーザーコントロールでカスタマイズしたボタンを作成し、そのボタンを動的に配置していく処理を作成しました。しかし、ボタンに表示するボタン名の一部が長くなり、改行したいと考えました。しかし、改行を設定してもうまく表示されず、原因がわかりません。
  • C#でWindowsアプリケーションを作成しています。ユーザーコントロールでカスタマイズしたボタンのテキストに改行を挿入したいです。具体的には、ボタンのテキストに「あ」と「い」を改行して表示したいです。しかし、現在の実装では改行を設定してもうまく表示されず、どうすればよいか悩んでいます。
  • C#でWindowsアプリケーションを作成しています。ユーザーコントロールを使ってカスタマイズしたボタンを作成し、そのテキストに「あ」の後に「い」を改行して表示したいです。しかし、現在の実装では改行を設定してもうまく表示されない問題があります。どのように改善すればよいでしょうか?
回答を見る
  • ベストアンサー

C# ボタンコントロール内で文字の改行

C#でWindowsアプリケーションを作成しています。 ユーザーコントロールでカスタマイズしたボタンを作成しました。 また、そのボタンを動的に配置していく処理を作成しました。 ボタンに表示するボタン名(文字列)が長いものもあるので、改行を させようと思い、以下のようなコードを書きました。 UCtl.BT_Button1.Text = "あ" + Environment.NewLine + "い"; また、このユーザーコントロール「UCtl」は以下の配列に格納します。 cControl1 = new Control[5]; その後、パネルの上に追加していっています。 wPanel.Controls.Add(cControl1[0]); wPanel.Controls.Add(cControl1[1]); しかし、期待する結果”あ”改行”い”と表示されず、”あ”のみが表示されます。 原因として考えられることがお分かりの方がいらっしゃればお教えいただきたいです。 以上です。

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

  • ベストアンサー
  • akouryy
  • ベストアンサー率100% (3/3)
回答No.1

どうやら、Buttonのテキストは、ボタンに十分な高さが無いと、 一部が見える訳ではなく、その行が全て表示されないようです。 例えば、私の環境で「MS ゴシック 9pt」の場合、高さが32px以上無いと "い"が表示されませんでした。 繰り返すと、この例では、31pxまでは"い"が全く見えず、 32pxになったとたんに"い"の全体が見えるようになりました。 あなたも、Buttonの高さを一度確認してみて下さい。

関連するQ&A

  • ボタンコントロールの改行(WindowMobile)

    VB.NET、WindowsMobile5.0の開発です。 ボタンコントロール内のテキストを改行したいのですがどうすればよいのでしょうか? フォームロードで Me.Button4.Text = "xxx" + vbCrLf + "yyy" Me.Button4.Text = "xxx" & vbCrLf & "yyy" としてみましたがxxxが上側へ張り付いてyyyは表示されません。 ボタンの範囲を広げてもyyyは表示されてませんでした。 モバイル特有の何らかの処理が必要なのでしょうか? それともそもそも方法がだめなんでしょうか? 初歩的な質問で申し訳ありませんが、ご教授お願い申し上げます。

  • C# ユーザコントロール内のボタン押下を親で知る

    こんにちは。ユーザーコントロール内のボタンをクリックした時、そのユーザーコントロールをおいている親フォーム側で、それを知るにはどのようにすればよいでしょうか? ---------------------------------------------------------------------- [Form1.cs] void Inform_UserControlButton1Click() { //親が持っている変数を使って処理を行いたい } void Form1_Load(....) { //ユーザコントロールを設置 UserControl1 ctrl = new UserControl1(); this.Controls.Add(ctrl);   //ユーザコントロール内のbutton1を見つける List<Control> ctrl = new List<Control>(cps.Controls.Find("button1", false)); //Form1が持っている変数を使う為の関数を通るようにしたい (Button)ctrl[0].Click += new System.EventHandler(Inform_UserControlButton1Click); //←エラー } ---------------------------------------------------------------------- [UserControl.cs] button1が配置されています。 ---------------------------------------------------------------------- こんな感じにしてできないかなー?と思っていたのですが、//←エラーのところで、 イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。 となってしまい上手くいきません。 どのようにすればよいでしょうか?

  • ボタンの複数割り当てについて

    public class TestButton extends Applet implements ActionListener {      Button bt1,bt2,bt3;      public void init()      {           bt1 = new Button("red");           add(bt1);           bt2 = new Button("blue");           add(bt2);           bt3 = new Button("yellow");           add(bt3);           bt1.addActionListener(this);       } java初心者です。アプレットで上のようにボタンを作ります。それぞれが押された時に、red,blue,yellowが表示されるようにしたいのです。ActionListenerをインプリメントしているので、      public void actionPerformed(ActionEvent ae) をオーバーライドする必要がありますが、そこで質問です。 ボタンを3種類別々に関連づけるには、actionPerformed内をどのように記述したらよいでしょうか?また、init内はこれだけでいいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • Visual C++ でコントロールを配列にする方法

    VisualC++を使い始めて楽しさを覚え始めた頃ですが、壁にぶつかり解決できません。よろしくお願いいたします。 Windowsフォーム作成において、ボタンやラベルなど、ツールボックスからドロップできるコントロールを配列にする方法が分かりません。 ためしにボタンを二つは配置してから、Button1とButton2がButton[0]とButton[1]になるように定義から書き直してみましたが、 private: System::Windows::Forms::Button^ button[2]; の行で、 「: error C2728: 'System::Windows::Forms::Button ^ : ネイティブ配列はこのマネージ型を含むことはできません”」 とエラーがでます。 どうすれば、コントロールの配列を作れるのでしょうか。できるだけ簡単な方法(できればVisualC++の機能でGUIでサクッと作れれば良いのですが)をご教授願います。 過去の質問に似たものがありましたが、参照先のリンクが切れていました。。

  • ダイアログリソース内でボタンコントロールの表示を改行させたいんですけど

    VC++2005 win32アプリケーションにて ダイアログリソース内でボタンコントロールの表示を改行させたいんですけど、どうすれば出来ますか? いくらキャプションをイジッても出来ないので***.rcを色々イジってるんですが・・・ ・PUSHBUTTON "文字列1"\r\n"文字列2",IDC_BUTTON3,7,36,74,27 ・PUSHBUTTON "文字列1"+\r\n+"文字列2",IDC_BUTTON3,7,36,74,27 ・PUSHBUTTON "文字列1"&\r\n&"文字列2",IDC_BUTTON3,7,36,74,27 本当に初心者でアホなんで誰か教えてください。m__m

  • C# 動的に読み込んだコントロールの削除

    C#にて動的に読み込んだ不特定多数のコントロールを削除する正しい手順は どのような物でしょうか。 MSDNによるとコンテナに読み込んだコントロールをFlowLayoutPanel.Clear()で クリアするとメモリリークにつながるため、Dispose()をしろとあります。 動的に作成したコントロールが不特定多数のため、Foreach文をつかい FlowLayoutPanel.Controlsで確認できた物をDispose()しましたが、偶数indexの コントロールしか削除されませんでした。 まぁ、これはなんとなく分かるのですが、では、正しくすべてのコントロールを 削除するにはどうしたら良いのか分かりません。 ご教示のほど、よろしくお願いいたします。 確認コード(空のForm1_Loadに貼り付け) ※現象を再現させるためのサンプルで意味はありません // コントロール配置用のコンテナ FlowLayoutPanel panel = new FlowLayoutPanel(); panel.Dock = System.Windows.Forms.DockStyle.Fill; this.Controls.Add(panel); // テストコントロール追加ボタン Button create = new Button(); create.Size = new Size(50, 25); create.Text = "create"; create.Click += (ss, ee) => { for (int i = 0; i < 100; i++) { TextBox text = new TextBox(); text.Size = new Size(50, 25); text.Text = i.ToString(); panel.Controls.Add(text); } }; panel.Controls.Add(create); // コントロール削除ボタン Button delete = new Button(); delete.Size = new Size(50, 25); delete.Text = "delete"; delete.Click += (ss, ee) => { foreach (var control in panel.Controls) { if (control is TextBox) { ((TextBox)control).Dispose(); } } }; panel.Controls.Add(delete);

  • C# パネルの中にボタンを動的に配置したいです

    C# でフォームの中にパネルを置き、そのパネルの中に、ボタンを動的に配置したいです。 以下のページにあるようなことを、パネル内にしたいです。 動的にコントロールの配列を作成する http://dobon.net/vb/dotnet/control/buttonarray.html ---------------------- [C#] //ボタンコントロール配列のフィールドを作成 private System.Windows.Forms.Button[] testButtons; //フォームのLoadイベントハンドラ private void Form1_Load(object sender, System.EventArgs e) { //ボタンコントロール配列の作成(ここでは5つ作成) this.testButtons = new System.Windows.Forms.Button[5]; //ボタンコントロールのインスタンス作成し、プロパティを設定する this.SuspendLayout(); for (int i = 0; i < this.testButtons.Length; i++) { //インスタンス作成 this.testButtons[i] = new System.Windows.Forms.Button(); //プロパティ設定 this.testButtons[i].Name = "Button" + i.ToString(); this.testButtons[i].Text = i.ToString(); this.testButtons[i].Size = new Size(30, 30); this.testButtons[i].Location = new Point(i * 30, 10); //イベントハンドラに関連付け this.testButtons[i].Click += new EventHandler(this.testButtons_Click); } //フォームにコントロールを追加 this.Controls.AddRange(this.testButtons); this.ResumeLayout(false); } //Buttonのクリックイベントハンドラ private void testButtons_Click(object sender, EventArgs e) { //クリックされたボタンのNameを表示する MessageBox.Show(((System.Windows.Forms.Button) sender).Name); } ----------------------------- プログラムの初心者です。宜しくお願いいたします。

  • C# ユーザーコントロール作成

    C#で以下のようなユーザーコントロールを作成しています。 ・labelA、LabelBを2つ配置しただけのユーザーコントロール(UserA)を作成。 これをFormから動的に生成したいと考えています。 具体的には以下のようなコードを書きました。 UserA wUsr = new UserA(); wUsr.Location = new Point(1,1); this.Controls.Add(wUsr); この結果、ラベルはForm上に生成されなかったのですが、コードに間違いが あるのでしょうか?。 お分かりになるかたがいらっしゃればお教え頂ければと思います。 以上です。

  • 配列を利用したコントロールを作成して同一配列番号のコントロールを操作するには

    VB.NET2003を利用しています http://jeanne.wankuma.com/tips/control/arraycontrol.html こちらを参考にしてコントロールの配列を作成 ComboBox(i) Button(i) i=1 to 5(実際のコントロールのNameは違いますが便宜上このような記述にさせていただきました) として位置を変えながら配置していきました。  ComboBox   Button 1[不可 ▽] 1[ボタン]    可 2[不可 ▽] 1[ボタン] 3[不可 ▽] 1[ボタン] 4[不可 ▽] 1[ボタン] 5[不可 ▽] 1[ボタン] ComboBoxは同一イベントを使いたいと思っています ComboBox(i)のインデックス値が変わったらButton(i)のEnableを変更しようと思う場合どのように記述したらよいのでしょうか? 例:1が「不可」から「 可」に変わったら、1の「ボタン」というテキストを「押して」というテキストに変える と言うように同一配列番号のコントロールのプロパティを操作したいのです こういった場合はどのようにしたらよいのでしょうか 足りない情報などありましたらどんどんおっしゃってください よろしくお願いします

  • ボタンの表示を改行表示したい

    ボタンの表示を改行表示したい Windows CE上で動作するソフトを作成中で、ダイアログ上に5個のボタンを置き、押されたボタンにより、それぞれのボタンの表示を変更しようとしています。 中には1行では表示しきれないものがあり、改行したいのですが、「**・・・」と表示されます。他のボタンとのバランスを考えると、横幅を広げる事は出来ません。 ボタンの色を変える為、Owner DrawをTRUEにしているせいだろと推測は出来るのですが、どうやれば改行出来るのでしょうか? ※Owner DrawをFALSEに戻し、MultilineをTRUEにし、Owner DrawをTRUEにし、プロパティのCaptionに\nを入れると改行はされますが...。 環境は以下の通りです。 ・Windows CE 5.0 ・Visual C++ 2005 ・MFCスマートデバイス 以上、よろしくお願いします。

専門家に質問してみよう