WindowsFormアプリケーションで処理をするとき
時間のかかる処理だと進捗バーが欲しいなって思います
使うことなんてないけど…
なのでプライベートで触ってみます
サンプル作成
ツールボックスからProgressBarという部品を
ドラッグでForm上にもってくればいいみたい
Form上で赤く囲ってあるやつが、持ってきて配置した進捗バーです
ぱっと見なにか分かりません
画面上のボタンを押すと、タイマーがオンになって
タイマー1秒間隔で進捗バーを10%ずつ進めていく動作にしようと思います
そのためtimer1のIntervalを1000msにしておきます
Form1.cs
using System.Windows.Forms;
namespace TestApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value += 10;
if (progressBar1.Value >= 100)
timer1.Stop();
}
}
}
中身は簡単にこのとおり
ボタンをクリックしたらタイマーが起動して
タイマー1秒間隔で10%ずつ進捗がーバ増えていきます
実行結果
実行してボタンをクリックしてみます
進捗バーが1秒ごとに進んでいきます
思ったより挙動がなめらか
何も設定していないのにバーが光る
100%になったら光るのも止まりました
ちょっとわがまま言うとバーの色を変えたりできたらうれしいかな
あと処理の間に.Value=(進捗率)を書かなくても
自動である程度の進捗計算して表示してくれないかなあ
こっちで疑問に思ったこの2点
・移動できる境界線がわかりにくいので見やすくすることってできないかな
・全部表示できなくなったPanelはスクロールバーがついてほしい
解消する方法があったのでメモします
SplitContainerの境界線
配置したSplitContainerの部品を選択して
BordeyStyleのプロパティをNoneから変えたら表示されました
FixedSingleだとこんな感じ
Fixed3Dだとこんな感じ
個人的にはFixedSingleのほうが好み
SplitContainerのスクロール
SplitContainer上の各パネルを選択してプロパティを確認すると
AutoScrollプロパティがFalseになっていたのでこれをTrueにします
実行結果
実行するとFormが表示されます
上下の境界がはっきり見えています
境界線をドラッグして下に下げてみました
下のPanelにスクロールバーが出現しました
境界を上に持ち上げてみると
上のPanelの右側にうっすら何かはでましたが
ぱっと見スクロールバーには見えません…
カーソルを当てると▲▼が出てきました
クリックすればスクロールできるみたいです
ページを動かすための棒の部分が欲しかったのに
上のPanelに部品を追加して
サイズを大きくしてもう一度実行してみます
Formを開くと上のPanelが大きくなったことがわかります
境界を上にドラッグしてPanelの範囲を縮めると
今度はちゃんと棒の部分がでてきました
縦幅が狭いと▲▼しか出なくなるようです
WindowsFormアプリケーションで遊んでいるとき
Formを区切れる部品があることに気づいたのでメモしておきます。
サンプル作成
ツールボックスからSplitContainerというのを探して
Formにドラッグドロップします
ドロップしました
このPanel1とPanel2の間がマウスで調節できるようになっています
Panelが重なっててSplitContainerを選択できないので
Form上を右クリックしてSplitContainerを選択します
今回は横向きにしたいので
プロパティのOrientationをVertical→Horizonalに変更します
Formにのっけたのが横並びになりました
境界線をマウスで調節して
Panelの上に好きな部品をおいていきます
(Panel2にはこっそりRichTextBoxが乗ってます)
とりあえず検索ウィンドウみたいなものを作ってみました
実行結果
実行してみた感じ配置したときに調節したサイズで表示されています
境界あたりにカーソルを持っていくと
動かせそうな形になりました
境界線がどこか見えないのでカーソル配置むずかしい
そのまま下にドラッグすると下のPanelが小さくなっています
上にドラッグすると上のPanelが小さくなりました
部品がほぼ隠れて見えなくなってしまうのはちょっと困ります
メモ(残課題、こんどやってみる)
・移動できる境界線がわかりにくいので見やすくすることってできないかな
・全部表示できなくなったPanelはスクロールバーがついてほしい
log4net.xmlをいろいろペーストしたりして書きなおしていたときに
出力されたログがはてな(?)になってしまった
↓こんなかんじ
? ?
? ? ?
? ?
? ? ?
? ? System.Exception: 種類 'System.Exception' の例外がスローされました。
初めの2行がDEBUGログ
次の2行がINFOログ
最後の2行がERRORログです
それぞれ1行ずつしか出してないのに謎の?が2行ずつ
例外の内容だけちゃんと読めます
原因
恐らくコピペしまくった時にtabか全角空白か何かがどこかに入った模様
log4net.xmlのファイルを一度削除して作り直したら
ログ出力も正しい状態に戻りました