スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[C# .NET]テキストファイルに簡易ログを出力する

[C# ,NET] テキストファイルに簡易ログを出力する

.
プログラムの実行開始時と終了時に簡易ログを出力したい。
以下の要件を満たせるようにする。

1)ログはテキストファイルで実行ファイルの配下フォルダに保存
2)ログ形式は、日時と結果文字列
3)日にちが変わっていたらログファイルをローテート

というわけで書く。

スポンサーサイト

[C#]テキストボックスのカスタムコントロールを作成する

[C#] TextBoxに全て選択機能がついたカスタムコントロールを作成する

.
前回は、TextBoxにCtrl+Aキーで全て選択する機能をつける方法について書いた。
でも、あれだとTextBoxを追加する度に個別に設定しないといけなくて、かなり面倒。

というわけで、全て選択の機能をデフォルトで使用できるカスタムTextBoxを作成してみる。
カスタムコントロールといっても、単純な機能を1つ2つつけるくらいなら、意外に簡単。

環境:
Microsoft Visual C# 2008 Express Editon

[C#]テキストボックスで『全て選択』がしたい

[C#]テキストボックスで Ctrl+A(全て選択)がしたい

テキストエディタでは当たり前のように使用できる、Ctrl+Aによる全て選択は、デフォルトのテキストボックスでは
使用できない。 意外に不便なので、実装してあげる。
.

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == System.Windows.Forms.Keys.A & e.Control == true)
    {
        textBox.SelectAll();
    }
}

.
テキストボックスのイベント『KeyDown』に設定すればおk。
別にCtrl+Aじゃなくてもいいっていうなら、[ System.Windows.Forms.Keys.A & e.Control ]の部分を
変えても問題ない。


これで、全て選択ができるようになるけど、テキストボックスを配置する度に上記のコードを設定するのは
かなり面倒くさい。
なので、次は全て選択の機能(イベント)をデフォルトで使用できるテキストボックスを作る方法・・・
カスタムコントロールについて書こうと思う。
.
.
C#によるコンポーネントプログラミング C#によるコンポーネントプログラミング
瀬尾 佳隆

オーム社
売り上げランキング : 374545

Amazonで詳しく見る

[C#]データベースに接続 backgroundWorker追加

C# BackgroundWorkerを使用してみる

.
以前書いたDB接続記事のだと、ちょっと多いレコード読み込むと画面が真っ白になって、操作不能になる。
それは放置していた問題だったが、最近それでかなりイライラさせられた。
なので前回のコードにBackgroundWorkerを加え、バックグラウンドでレコードを取得できるように改修することにした。
改修するにあたって、MSDNと@ITの記事を参考にした。

■参考記事
Windows フォーム コントロールのスレッド セーフな呼び出しを行う
時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB]

正直言うと、MSDNにかなり分かりやすいサンプルコードがあって驚いた。
一部分なんか丸々使えた。感謝。
@ITのは、実際にソースコードをダウンロードして、BackgroundWorkerの動きを確認するのに役立った。

で、できたコードは以下に記載。
縦に長すぎて、全体が把握しづらい。
あと、うちのブログには横幅が足りないと思うんだ・・・。
.

[C#]NumericUpDownのReadOnlyをTrueにしても

■NumericUpDownのReadOnlyって変じゃね?
NumericUpDownのReadOnlyをTrueにすると、以下のような状態になる。
nume1 

よし、これで読み取り専用になった・・・と思ったら、矢印キーをクリックしたら普通に値が増減する。
アレ困ったなと思って、色々なキーワードで検索しても、情報が見つからない。

結局読み取り専用かつ、矢印キーによる増減を制限するには、以下のようにした。

numericUpDown1.ReadOnly = true;
numericUpDown1.Increment = 0;


まず、ReadOnlyのプロパティをTrueにする。
さらに矢印キーによる増減を0に設定し、実質値が変更できないようにした。
すごく・・・力技です。

もっとスマートにやる方法があるかもしれないけど。とりあえずメモ。

C#ルールブック ~読みやすく効率的なコードの原則 C#ルールブック ~読みやすく効率的なコードの原則
向山 隆行,片山 優司,阿部 順一,寺田 和朗,畑中 良平
電通国際情報サービス

技術評論社
売り上げランキング : 12657

Amazonで詳しく見る

[C#]データベースに接続する

■C# DB接続
C#から SQL Server 2005 に接続する。

載せるのは、SqlDataAdapter を使用する方法。
#勿論、SqlConnectionを使うこっちの方法でも有り。
  ○ADO.NET で SQL Server に接続する

using System.Data.SqlClientして、フォームにボタンひとつ、テキストボックスを配置して
ボタンのイベントに以下のコードを書く。

private void button1_Click(object sender, EventArgs e)
{
    DataSet _readDB = new DataSet();

    string ConnectionString = "Persist Security Info=False;User ID=sa;Password=XXXXX;Initial Catalog=DBNAME; Server=10.100.xxx.xxx;";

    SqlDataAdapter sqlAdapter = new SqlDataAdapter("select top 10 * from dbo.tbl_TEST", ConnectionString);

    sqlAdapter.Fill(_readDB);

    //区切り文字
    string sptword = "\t";

    foreach (DataRow rowline in _readDB.Tables[0].Rows)
    {
        foreach (var rowitem in rowline.ItemArray)
        {
            textBox1.Text += rowitem.ToString().Trim() + sptword;
        }
        textBox1.Text += Environment.NewLine;
    }
}


[やってること]
DBに対してSQLを実行して、結果をテキストボックスにタブ区切りで取得。
[ string sptword = "\t"; ]を変えれば、違う区切り文字にもできる。




小さなチーム、大きな仕事―37シグナルズ成功の法則

C# ツリービュー 子ノード 全てチェック

■C#メモ ツリービュー
親ノードをチェックしたとき、子ノードを一度にチェックしたい。
親をはずしたら、子もはずれる。

ここにずばり解答があった。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=45248&KLOG=77

ちょっと探すのに手間どったのでメモメモ…

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) {
    foreach (TreeNode node in e.Node.Nodes) node.Checked = e.Node.Checked;
}

試してないけど、これだと子ノードの子ノードまでは、チェックされないかな。
必要ないから、調べてはいないけど。

===追記
上記のコードはそのまま貼り付けるだけじゃ駄目で、TreeViewのプロパティに設定する必要がある。

1.TreeViewのプロパティで、稲妻マークのタブに移動。
trevt.jpg
2.「AfterCheck」の項目でダブルクリックすると、自動で処理が生成。
3.生成された処理のところに上記のコードのforeachの1行を貼り付ける。以上。



ちなみに以下のようなツリービューを手動で作成して、試したみたところ
親ノードにチェックを入れると、子の子の子ノードまで全てチェックされた。
node.jpg



C# 正規表現メモ2




   / ̄ ̄\ ふーん...
 /   _ノ  \
 |    ( ●)(●)         キリッ ____
. |     (__人__)           /\   / \
  |     ` ⌒´ノ          /(ー)  (ー) \ Linuxアカウント名で入力不可の文字列を
.  |         }         / ⌒(__人__)⌒   \ チェックする正規表現書いてみたんだお
.  ヽ        }     \     |    |r┬-|      |
   ヽ     ノ       \  \   `ー'´     _/
   /    く. \         \  ノ          \
   |     \  \    (⌒二                |
    |    |ヽ、二⌒)、        \        |  |


随分長いけど正規表現は
「以外」って指定はできないのか?
 \                 /
    ̄ ̄ ̄ ̄Ⅴ ̄ ̄ ̄ ̄
        / ̄ ̄\
      /       \        ___
      |::::::        |     /     \
     . |:::::::::::     |  / ⌒  ⌒  .\ ・・・・・・。
       |::::::::::::::    |/  (●) (●)   \
     .  |::::::::::::::    } |    (__人__)     |
     .  ヽ::::::::::::::    } \   ` ⌒´     _/
        ヽ::::::::::  ノ   |           \
        /:::::::::::: く    | |         |  |
-―――――|:::::::::::::::: \-―┴┴―――――┴┴――
         |:::::::::::::::|ヽ、二⌒)




        / ̄ ̄\
      /       \      ____
      |::::::       |   /      \
.      |:::::::::::     |  /  ⌒  ⌒  \
       |::::::::::::::    |/   (●) (●)   \
.       |::::::::::::::    } |     (__人__)    |
.       ヽ::::::::::::::    } \    ` ⌒´    _/
        ヽ::::::::::  ノ   |           \
        /:::::::::::: く    | |         |  |
-―――――|:::::::::::::::: \-―┴┴―――――┴┴――




人に言われるまで、まったくその発想が浮かんでこなかった。
なんという下級戦士。

というわけで、改めて書く。ダイアログだすとこは省略。
半角英数と.(ドット)、_(アンダーバー)、-(ハイフォン)以外の文字列が入力されたらチェックする

メモ:ユーザーを作成・編集・削除するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/031adduser.html
ここにLinuxアカウント名の制限載ってる。
ドットはできるとは書いてないけど、やってみたらできた。

で、コード。 ダイアログだすとこは変わらないので、省略。


System.Text.RegularExpressions.Regex regex2 = new System.Text.RegularExpressions.Regex
(@"[^0-9a-zA-Z._-]");
System.Text.RegularExpressions.Match result2 = regex2.Match(textBox1.Text);


そもそも前回の正規表現は全角文字列のチェックしないで、TextBoxのプロパティで制限する・・・だったから
よく考えないでも欠陥品。

今回のは全角文字もチェックするので、完全にこっちのが良い。短いし。
文字数関しては、プロパティによる制限でも良いと思うけど、Length使ってチェックできるか。(textBox1.Text.Length > 8)

以上。

関連記事:正規表現クックブック これは実用的すぎる

オマケポーギーに話す Fine Software Writings
人に問題の説明をしている内に自己解決する...
誰でもあるあるな事だと思う。

これを人ではなく、物に対して行うことをラバーダッキングっていうのか。
意識して行うと良いかもしれないが・・・人が密集してる職場のデスクでやったら変人扱いだな。



---
WindowsLiveWriterで記事を投稿できなくなった・・・。

ぎぎぎ・・・・Blogの管理ページの投稿ページ使いにくい、書きにくい。
ブログサーバーから受信したblogger.getUsersBlogs メソッドへの応答が無効です とかなんぞ。
文字コードもunicodeに指定してあるが・・・

C# 正規表現メモ

■C# 正規表現メモ
基本的な文法は、ここで学べばよろし。
DOBON.NET 正規表現の基本
http://dobon.net/vb/dotnet/string/regex.html

ケース:Linuxユーザ名に登録できない文字列が入力された場合にメッセージダイアログを表示
     入力を許可する文字列は,,,半角アルファベット、数字、-(ハイフォン)、_(アンダーバー)、.(ドット)のみ。

テキストボックスで使うと想定して、全角文字のチェックはなし。
(テキストボックスのプロパティ[ImeMode]をDisableにすれば、半角しか打てなくなる)
(でも、コピペで貼り付けることはできるんだよな シランシラン)

文字数は、プロパティで制限すればよし。(制限は通常8文字までらしいけど、32文字までってのもある)


Linuxユーザの制限はここに書いてあった。
ユーザーを作成・編集・削除するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/031adduser.html

で、コード。

//半角文字列のチェック
//ハイフォン、ドット、半角英数字は除く
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex
                                            (@"[  \f\n\r\t\v]|[!-,]|[/]|[:-@]|[[-^]|[`]|[{-~]");
System.Text.RegularExpressions.Match result = regex.Match(textBox1.Text);

if (result.Success == true)
{
    MessageBox.Show("不正な文字列が入力されています");
}


(@"[ \f\n\r\t\v]|[!-,]|[/]|[:-@]|[[-^]|[`]|[{-~]")
ここ
が本元。
内訳は、以下のように

[  \f\n\r\t\v]                  ・・・  空白チェック(半角・全角)
・|[!-,]|[/]|[:-@]|[[-^]|[`]|[{-~]  ・・・  半角アルファベット、数字、-(ハイフォン)、_(アンダーバー)、.(ドット
)
                                              以外の半角文字

半角文字列のチェック部分は、ASCII文字コード表を見ながら作成。
[:-@] これの意味は、コロン:からアットマーク@までという意味。
許可したい文字列があったら、コード表をみながら抜き出せばおk。


正規表現は、一度みっちりと学ばないとイカンなぁ。
使う度に調べてる現状じゃぁ駄目駄目だ。

でもこれを覚えるのは・・・ちょっと辛いぞ...

[各言語正規表現対応表]
http://module.jp/dist/web+db-press19-regexa.pdf

関連記事:正規表現クックブック これは実用的すぎる
■スポンサードリンク
■プロフィール

ベタログ

管理人 : ベタログ (Twitterアカウント

思い立ったら、ジャンルを気にせず記事にする。それが自由というものだ。
そんな管理方針。
主に取り扱ってる事:オンラインゲーム(SDGO/Travian/ロードオブナイツ)、プログラミングメモ、ネット小説/書籍の感想/観葉植物など。

■まとめ記事
■カテゴリ
■最新記事
■PICKUP

個人的に押しているモノ


魚里高校ダンジョン部! 藻女神様と行く迷宮甲子園
魚里高校ダンジョン部! 藻女神様と行く迷宮甲子園
■感想記事
これぞ青春エンタメ小説。熱いですよ!

オーバーロード1 不死者の王
オーバーロード1 不死者の王
■感想記事
最強軍団が異世界を蹂躙するファンタジー。Web版も読めますが、凄まじい加筆がされているため、Web版読者も楽しめます。
■お勧め品
■最新コメント
■月別アーカイブ
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。