プログラミングがわからなすぎる

プログラミングがわからなすぎる

気が向いた時の備忘録。プログラミングは好きなのに物凄く単純なものしか理解できないからメモしていくうちに覚えられたらいいな
ターゲットフレームワークは大体4.7.2

WindowsFormアプリケーションで処理をするとき

時間のかかる処理だと進捗バーが欲しいなって思います

使うことなんてないけど…

 

なのでプライベートで触ってみます

 

 

サンプル作成 

ツールボックスからProgressBarという部品を

ドラッグでForm上にもってくればいいみたい

Form上で赤く囲ってあるやつが、持ってきて配置した進捗バーです

ぱっと見なにか分かりません

 

画面上のボタンを押すと、タイマーがオンになって

タイマー1秒間隔で進捗バーを10%ずつ進めていく動作にしようと思います

そのためtimer1のIntervalを1000msにしておきます

 

 Form1.cs

using System;
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のファイルを一度削除して作り直したら

ログ出力も正しい状態に戻りました