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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.68362 の関連記事表示

<< 0 >>
■68362  テキストボックスの文字をスクロールさせるには?
□投稿者/ たいち -(2013/10/16(Wed) 16:28:00)

    分類:[C#] 

    テキストボックスに文字を表示したいのですが、
    テキストボックスの既存の大きさ内に入りきりません。
    テキストボックスの大きさを変更する事が
    難しいので、電光掲示板のように
    右から左へ文字をスクロールして表示させてみたいのですが、
    どうやっていいのか分かりません。
    出来るのかどうかもよく分かりません。

    分かる方、どうか教えて下さい。m(_ _)m

    例:
    Textbox1.Text="たいちですよろしくお願いします。"
    と値を入れる。

    Textbox1.Textは通常表示させると5文字しか入らない設定で
    "たいちです"しか表示されないものを
    右から左へ1文字ずつスクロールして、全部の文字が読めるようにしたいです。


    説明が不十分でしたらすいません。
親記事 /過去ログ116より / 関連記事表示
削除チェック/

■68363  Re[1]: テキストボックスの文字をスクロールさせるには?
□投稿者/ 魔界の仮面弁士 -(2013/10/16(Wed) 17:22:41)
    No68362 (たいち さん) に返信
    > 右から左へ1文字ずつスクロールして、全部の文字が読めるようにしたいです。

    Timer で、定期的に先頭文字を一文字ずつ削って、それっぽく見せるとか。
    http://social.msdn.microsoft.com/Forums/vstudio/en-US/78bf83d7-e245-41d9-a871-e00cb4df9317/


    > 右から左へ文字をスクロールして表示させてみたいのですが、
    > どうやっていいのか分かりません。

    表示だけの問題であれば、以前作成した Label コントロールがあります。参考になれば。
    自前で描画している関係上、TextBox には向きませんが、文字単位のスクロールよりは滑らかに動くかと。

    [MarqueeLabel]
    http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=11243
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68375  Re[2]: テキストボックスの文字をスクロールさせるには?
□投稿者/ たいち -(2013/10/17(Thu) 13:34:24)
    No68363 (魔界の仮面弁士 さん) に返信
    > ■No68362 (たいち さん) に返信
    >>右から左へ1文字ずつスクロールして、全部の文字が読めるようにしたいです。
    >
    > Timer で、定期的に先頭文字を一文字ずつ削って、それっぽく見せるとか。
    > http://social.msdn.microsoft.com/Forums/vstudio/en-US/78bf83d7-e245-41d9-a871-e00cb4df9317/
    >
    >
    >>右から左へ文字をスクロールして表示させてみたいのですが、
    >>どうやっていいのか分かりません。
    >
    > 表示だけの問題であれば、以前作成した Label コントロールがあります。参考になれば。
    > 自前で描画している関係上、TextBox には向きませんが、文字単位のスクロールよりは滑らかに動くかと。
    >
    > [MarqueeLabel]
    > http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=11243


    アドバイスありがとうございます。

    すいませんm(_ _)m

    VBが全く分かりません。
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68372  Re[1]: テキストボックスの文字をスクロールさせるには?
□投稿者/ ムドー -(2013/10/17(Thu) 09:01:28)
    No68362 (たいち さん) に返信
    > テキストボックスに文字を表示したいのですが、
    > テキストボックスの既存の大きさ内に入りきりません。

    別な視点からのアイデアですがToolTipを使用して文字を表示させてみてはいかがでしょうか?

    ツールチップ(ツールヒント)を表示する
    http://dobon.net/vb/dotnet/control/showtooltip.html

    伝言掲示板のような表示でしたら魔界の仮面弁士さんの手法がいいかと思われます。
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68374  Re[2]: テキストボックスの文字をスクロールさせるには?
□投稿者/ たいち -(2013/10/17(Thu) 13:33:28)
    No68372 (ムドー さん) に返信
    > ■No68362 (たいち さん) に返信
    >>テキストボックスに文字を表示したいのですが、
    >>テキストボックスの既存の大きさ内に入りきりません。
    >
    > 別な視点からのアイデアですがToolTipを使用して文字を表示させてみてはいかがでしょうか?
    >
    > ツールチップ(ツールヒント)を表示する
    > http://dobon.net/vb/dotnet/control/showtooltip.html
    >
    > 伝言掲示板のような表示でしたら魔界の仮面弁士さんの手法がいいかと思われます。

    アドバイスありがとうございます。

    すいませんm(_ _)m

    VBが全く分かりません。
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68378  Re[3]: テキストボックスの文字をスクロールさせるには?
□投稿者/ 魔界の仮面弁士 -(2013/10/17(Thu) 14:35:04)
    No68375 (たいち さん) に返信
    > VBが全く分かりません。
    
    言語そのものは分からずとも、それ以外の部分について、たとえば
     ・Timer の使い方を把握しているか、あるいは全く分からないのか
     ・TextBox から先頭の文字を削りとる文字列操作をコーディングできるのか
     ・表示に Label を用いてみるのはどうか
     ・TextBox に ToolTip を使う代案が使えるかどうか
    といった点に対して言及するぐらいの事はできるのでは…?
    第一、ムドーさんの回答には、C# での説明も紹介されているのですし。(^_^;)
    
    
    とりあえず、先の MarqueeLabel を C# 版に翻訳してみました。
    
    
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Windows.Forms;
    
    public sealed class MarqueeLabel : Label
    {
        private IContainer components;
        private Timer timer;
        private float location = 0.0f;
    
        public MarqueeLabel()
        {
            base.UseCompatibleTextRendering = true;
            timer = new Timer(components = new Container());
            timer.Interval = 50;
            timer.Tick += delegate 
            {
                if (location > (float)Width)
                {
                    location = -(float)Width;
                }
                else
                {
                    location += speed / 10.0f;
                }
                Invalidate();
            };
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            base.AutoSize = false;
            timer.Start();
        }
    
        [DefaultValue(false)]
        public override bool AutoSize
        {
            get { return base.AutoSize; }
            set { if (!DesignMode) base.AutoSize = value; }
        }
    
        /// <summary>流れるスピードを指定します。</summary>
        [Description("流れるスピードを指定します。")]
        [Category("Action"), DefaultValue(20.0f)]
        public float Speed
        {
            get { return Math.Max(0.0f, Math.Min((float)Width, speed)); }
            set
            {
                if (value < 0.0f)
                {
                    throw new ArgumentOutOfRangeException("Speed", value, "0以上の値を指定してください。");
                }
                speed = Math.Min((float)Width, value);
                if (value == 0.0f)
                {
                    timer.Stop();
                    if (DesignMode) ResetPosition();
                }
                else
                {
                    timer.Start();
                }
            }
        }
        private float speed = 20.0f;
    
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.TranslateTransform(-location, 0.0f);
            base.OnPaint(e);
        }
    
        public void ResetPosition()
        {
            location = 0.0f;
            Invalidate();
        }
    
        [DebuggerNonUserCode]
        protected override void Dispose(bool disposing)
        {
            try
            {
                if (disposing && components != null) { components.Dispose(); }
            }
            finally
            {
                base.Dispose(disposing);
            }
        }
    }
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68379  Re[3]: テキストボックスの文字をスクロールさせるには?
□投稿者/ ムドー -(2013/10/17(Thu) 15:28:18)
    No68374 (たいち さん) に返信
    > すいませんm(_ _)m
    >
    > VBが全く分かりません。

    先のURLには魔界の仮面弁士さんのおっしゃる通りC#版も記載されておりますのでよくお読みください。

    >例:
    >Textbox1.Text="たいちですよろしくお願いします。"
    >と値を入れる。

    であれば、

    Textbox1.Text="たいちですよろしくお願いします。";
    toolTip1.SetToolTip(Textbox1, Textbox1.Text);

    でテキストボックスにマウスを載せるとツールチップが表示されるかと思います。

    ・前提としてhttp://dobon.net/vb/dotnet/control/showtooltip.htmlの「フォームデザイナを使用する方法」
     に書いてある1番まで終了していること


    動的に使用したいのであればTextbox1のLeaveイベントやTextCangedイベント内に記述してもいいかもしれません。
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68383  Re[1]: テキストボックスの文字をスクロールさせるには?
□投稿者/ 魔界の仮面弁士 -(2013/10/17(Thu) 20:30:35)
    No68362 (たいち さん) に返信
    > 分類:[C#] 
    この部分、返信時の本文部には引用されないんですよね…。
    
    返信するまでは、C# として読み進めていたのですが、いざ回答する際に、
    > 例:
    > Textbox1.Text="たいちですよろしくお願いします。"
    という内容を見て、VB 向けのコードを紹介してしまっていました。その点は失礼しました。
    
    TextBox1.Text = "たいちですよろしくお願いします。"   ← Visual Basic の場合(コントロール名の先頭が大文字)
    textBox1.Text = "たいちですよろしくお願いします。";  ← C# の場合 (末尾にセミコロン)
    
    
    > Textbox1.Textは通常表示させると5文字しか入らない設定で
    > "たいちです"しか表示されないものを
    > 右から左へ1文字ずつスクロールして、全部の文字が読めるようにしたいです。
    
    先の例は Label 案だったので、今度は TextBox 案。
    Form1 上に、TextBox を 3 つと、Timer を 1 つ貼っておいてください。
    
    
    private void Form1_Load(object sender, EventArgs e)
    {
        textBox1.Text = "たいちですよろしくお願いします。";
        textBox2.Text = "たいちですよろしくお願いします。";
        textBox3.Text = "たいちですよろしくお願いします。";
        SetScrollableTextBox(textBox2, BorderStyle.Fixed3D);
        SetScrollableTextBox(textBox3, BorderStyle.FixedSingle);
    
        timer1.Interval = 50;
        timer1.Start();
    }
    
    private void SetScrollableTextBox(TextBox txt, BorderStyle border)
    {
        Panel p = new Panel();
        p.Location = txt.Location;
        p.Size = txt.Size;
        p.BackColor = txt.BackColor;
        p.BorderStyle = border;
        txt.BorderStyle = BorderStyle.None;
        txt.Parent.Controls.Add(p);
        p.Controls.Add(txt);
        txt.SetBounds(0, 0, int.MaxValue, txt.Height);
        timer1.Tick += delegate
        {
            txt.Left -= 1;
            using (Graphics g = txt.CreateGraphics())
            {
                int w = (int)g.MeasureString(txt.Text, txt.Font).Width;
                if(w < -txt.Left)
                {
                    txt.Left = p.Width;
                }
            }
        };
    }
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/

■68401  Re[2]: テキストボックスの文字をスクロールさせるには?
□投稿者/ たいち -(2013/10/18(Fri) 18:02:12)
    No68383 (魔界の仮面弁士 さん) に返信
    > ■No68362 (たいち さん) に返信
    >>分類:[C#] 
    > この部分、返信時の本文部には引用されないんですよね…。
    >
    > 返信するまでは、C# として読み進めていたのですが、いざ回答する際に、
    >>例:
    >>Textbox1.Text="たいちですよろしくお願いします。"
    > という内容を見て、VB 向けのコードを紹介してしまっていました。その点は失礼しました。
    >
    > TextBox1.Text = "たいちですよろしくお願いします。" ← Visual Basic の場合(コントロール名の先頭が大文字)
    > textBox1.Text = "たいちですよろしくお願いします。"; ← C# の場合 (末尾にセミコロン)
    >
    >
    >>Textbox1.Textは通常表示させると5文字しか入らない設定で
    >>"たいちです"しか表示されないものを
    >>右から左へ1文字ずつスクロールして、全部の文字が読めるようにしたいです。
    >
    > 先の例は Label 案だったので、今度は TextBox 案。
    > Form1 上に、TextBox を 3 つと、Timer を 1 つ貼っておいてください。
    >
    >
    > private void Form1_Load(object sender, EventArgs e)
    > {
    > textBox1.Text = "たいちですよろしくお願いします。";
    > textBox2.Text = "たいちですよろしくお願いします。";
    > textBox3.Text = "たいちですよろしくお願いします。";
    > SetScrollableTextBox(textBox2, BorderStyle.Fixed3D);
    > SetScrollableTextBox(textBox3, BorderStyle.FixedSingle);
    >
    > timer1.Interval = 50;
    > timer1.Start();
    > }
    >
    > private void SetScrollableTextBox(TextBox txt, BorderStyle border)
    > {
    > Panel p = new Panel();
    > p.Location = txt.Location;
    > p.Size = txt.Size;
    > p.BackColor = txt.BackColor;
    > p.BorderStyle = border;
    > txt.BorderStyle = BorderStyle.None;
    > txt.Parent.Controls.Add(p);
    > p.Controls.Add(txt);
    > txt.SetBounds(0, 0, int.MaxValue, txt.Height);
    > timer1.Tick += delegate
    > {
    > txt.Left -= 1;
    > using (Graphics g = txt.CreateGraphics())
    > {
    > int w = (int)g.MeasureString(txt.Text, txt.Font).Width;
    > if(w < -txt.Left)
    > {
    > txt.Left = p.Width;
    > }
    > }
    > };
    > }

    丁寧な回等ありがとうございます。
    参考にさせて頂きます。
記事No.68362 のレス /過去ログ116より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -