C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: label.textでプロパティー値を使って改行させるには


(過去ログ 31 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■15253 / inTopicNo.1)  label.textでプロパティー値を使って改行させるには
  
□投稿者/ taguchi (25回)-(2008/03/09(Sun) 16:12:19)

分類:[C#] 

毎度基本的な事で申し訳ありません。

VS2005 C# 

label.textで改行させるには、\nを入力してやれば出来ますが、
ユーザコントロールに設定したプロパティー値をGETで取得した
値を使用すると改行されず、\nは文字として表示されてしまいます。
どうすれば改行するようになるでしょうか?

ユーザコントロール側
テキストボックスにHogeTextを設定できるようにする。

       private string hogeText = "";
       public string HogeText
       {
           set
           {
               this.hogeText = value;
           }
           get
           {
               return this.hogeText;
           }
       }

利用側
ユーザコントロールをUserControlとしてインスタンス化して
そのHogeTextをLabelに設定する。

     this.Label.Text = UserControl.HogeText;

ユーザコントロールHogeTextに「aaaaaa\nbbbbbb」と設定し、
表示させると、改行されずに「aaaaaa\nbbbbbb」とそのまま
表示されてしまいます。
エスケープシーケンスが文字として置き換わってしまうのでしょうか?

アドバイスありましたら宜しくお願い致します。

引用返信 編集キー/
■15254 / inTopicNo.2)  Re[1]: label.textでプロパティー値を使って改行させるには
□投稿者/ 渋木宏明(ひどり) (669回)-(2008/03/09(Sun) 16:34:57)
渋木宏明(ひどり) さんの Web サイト
> label.textで改行させるには、\nを入力してやれば出来ますが、

いいえ。改行は \r\n です。

引用返信 編集キー/
■15255 / inTopicNo.3)  Re[1]: label.textでプロパティー値を使って改行させるには
□投稿者/ Azulean (24回)-(2008/03/09(Sun) 16:46:48)
> label.textで改行させるには、\nを入力してやれば出来ますが、
次のようなことだと認識します。
label.Text = "aaa\nbbb";

ちなみにデザイナのプロパティから"aaa\nbbb"を設定すると"\n"はエスケープシーケンスではなく、単なる文字列として認識されます。
(Desginer.csでは"aaa\\nbbb"と記述されるはず)

> ユーザコントロールHogeTextに「aaaaaa\nbbbbbb」と設定し、
> 表示させると、改行されずに「aaaaaa\nbbbbbb」とそのまま
> 表示されてしまいます。
デザイナのプロパティから「aaaaaa\nbbbbbb」と入力したのであれば、前述のように単なる文字列です。
コード上で設定するのと、デザイナのプロパティから設定するのでは意味が違います。
HogeTextへの設定方法を見直して下さい。

ちなみに、デザイナでラベルのTextプロパティと同じように、複数行入力したいのであれば、HogeTextに次の属性をつけると良いと思います。
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(System.Drawing.Design.UITypeEditor))]
引用返信 編集キー/
■15260 / inTopicNo.4)  Re[2]: label.textでプロパティー値を使って改行させるには
□投稿者/ taguchi (26回)-(2008/03/09(Sun) 20:32:02)
渋木宏明(ひどり)さん、Azuleanさん
アドバイス有難うございました。

渋木宏明(ひどり)さんWrite:
>いいえ。改行は \r\n です。
私も色々試行錯誤の中で\r\nで試してはいましたが結果は同じでした。

Azuleanさんのおっしゃるように、デザイナで入力するとエスケープシーケンスを無効化してしまうようです。

AzuleanさんWrite:
>ちなみにデザイナのプロパティから"aaa\nbbb"を設定すると"\n"はエスケープシーケンスではなく、単なる文字列として認識されます。
>(Desginer.csでは"aaa\\nbbb"と記述されるはず)

なるほど。結局はソースに記述される事になるので、無効化されるのですね。


        private string hogeText = "";
        [Editor("System.ComponentModel.Design.MultilineStringEditor, 
            System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", 
            typeof(System.Drawing.Design.UITypeEditor))]
        public string HogeText
        {
            set
            {
                this.hogeText = value;
            }
            get
            {
                return this.hogeText;
            }
        }

Azuleanさんのアドバイス通り、属性を施してやると複数行入力出来るようになり、
意図する改行を表示する事が出来るようになりました。

有難うございました。

#こういう属性の一覧って何処に載っているのでしょうか?
#リファレンスとして知っておきたいなぁ。

解決済み
引用返信 編集キー/
■15263 / inTopicNo.5)  Re[3]: label.textでプロパティー値を使って改行させるには
□投稿者/ Azulean (25回)-(2008/03/09(Sun) 21:21:34)
> #こういう属性の一覧って何処に載っているのでしょうか?
> #リファレンスとして知っておきたいなぁ。
今回のはリファレンスで見たのではなく、label.Textの"Text"部分に合わせて、F12キーでControl.Textメタデータを表示しています。

解決済み
引用返信 編集キー/
■15264 / inTopicNo.6)  Re[4]: label.textでプロパティー値を使って改行させるには
□投稿者/ taguchi (27回)-(2008/03/09(Sun) 22:22:31)
Azulean さん

> 今回のはリファレンスで見たのではなく、label.Textの"Text"部分に合わせて、F12キーでControl.Textメタデータを表示しています。

こういう見方が有ったんですね。
大変勉強になりました。
有難うございました。
解決済み
引用返信 編集キー/
■15268 / inTopicNo.7)  Re[3]: label.textでプロパティー値を使って改行させるには
□投稿者/ よねKEN (128回)-(2008/03/09(Sun) 23:11:55)
1点だけ。

> Azuleanさんのおっしゃるように、デザイナで入力するとエスケープシーケンスを無効化してしまうようです。

そうではなく\nのような表記はC#の言語仕様上のルールであって、.NET Frameworkのルールではないからですね。

解決済み
引用返信 編集キー/
■15278 / inTopicNo.8)  Re[4]: label.textでプロパティー値を使って改行させるには
□投稿者/ taguchi (28回)-(2008/03/10(Mon) 09:20:49)
よねKENさん
アドバイス有難う御座いました

>>Azuleanさんのおっしゃるように、デザイナで入力するとエスケープシーケンスを無効化してしまうようです。
>
> そうではなく\nのような表記はC#の言語仕様上のルールであって、.NET Frameworkのルールではないからですね。

.NET Frameworkのルールですね。
自分の中で理解できていないので、
もう少し.NET Frameworkのルールを勉強してみます。

有難う御座いました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -