2008年3月14日金曜日

【C#】ステータスバーでマーキー

一昔前、ブラウザのステータスバーにスクロールする文字列が
流れているHPをよく見かけたのですが、今では全くといって
いいほど見られなくなりましたね・・・。
正直、目障りだし、重くなるしでなんのメリットもなかったような気がします。
しかし、それはそれで遊び心をくすぐってくれました。
ということで、ウィンドズアプリで敢えて自作してみました。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//ステータスバーに表示する固定文字列
private const string _scrollString = "スクロール";
//全て半角スペースの文字列
private System.Text.RegularExpressions.Regex _regex =
new System.Text.RegularExpressions.Regex("^ +$");

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.toolStripStatusLabel1.Text = _scrollString;
}

private void timer1_Tick(object sender, EventArgs e)
{
if (this.toolStripStatusLabel1.Text.Length == 150)
{
int idxRemoveString = this.toolStripStatusLabel1.Text.Length - 1;

this.toolStripStatusLabel1.Text =
this.toolStripStatusLabel1.Text.Remove(idxRemoveString);

if (_regex.IsMatch(this.toolStripStatusLabel1.Text))
{
this.toolStripStatusLabel1.Text = string.Empty;
}

}

if (this.toolStripStatusLabel1.Text.Length < _scrollString.Length)
{
int stringLength =
_scrollString.Length - 1 - this.toolStripStatusLabel1.Text.Length;

this.toolStripStatusLabel1.Text =
_scrollString.Substring(stringLength, 1)
+ this.toolStripStatusLabel1.Text;
}
else
{
this.toolStripStatusLabel1.Text =
" " + this.toolStripStatusLabel1.Text;
}
}
}
}
前準備
FormにTimerとstatusStripを貼り付け、statusStripにtoolStripStatusLabelを追加して準備完了。

概要
処理としては、表示する文字列の前に半角スペースを追加していきあたかも動いてるかのようにしています。そして右端(表示する最大文字列150バイト)に達したら、表示する文字列の末尾から一文字ずつ消してフェードアウトさせ、表示文字列が全てスペースになったら(ステータスバーを全てスペースで埋め尽くす)、いったん、リセットして今度は左端からフェードインするために、表示する文字列の末尾から一文字ずつ追加していってます。

おまけ
まぁ、こんなもの作っても誰も利用しないと思うので、思い切って稼働中の業務アプリに秘密の業務アプリを作成し、あることをすると起動するように仕込んどきました^^;

もしバレて怒られたら、遊び心(ゆとり)もない会社ということで、恐らくこの先、短い命でしょう。これを笑って許すくらいの余力のある会社ならきっとこの先も安泰かな?それ以前に気づかれずに埋もれてしまうでしょう・・・。

ちなみに、秘密の業務アプリといっても普通に業務で使える機能を備えている優秀なおまけ機能です。むしろ公開してもいいくらい(笑

0 件のコメント: