タグ

ブックマーク / www.moonmile.net (28)

  • [C#] 何故 enum に拘りたくなるのか? | Moonmile Solutions Blog

    enum 値に任意の名称やその他の情報を保持する方法について | Masa’s Lab http://blog.masa1115.com/?p=1062 どうして enum に拘ってるのか… | Masa’s Lab http://blog.masa1115.com/?p=1078 のところをざっと見て、私なりに考えると、 使ってはいけない定数定義の一例 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2589 でも書いていて…ないか、もっと別なところかもしれませんが、基はC言語の「#define」と「enum」の違いからです。 ■#define は数値、enum は型 #define WEEKDAY_SUN 0 #define WEEKDAY_MON 1 #define WEEKDAY_TUE 2 ...

    JHashimoto
    JHashimoto 2012/08/27
    "enum 値に任意の名称やその他の情報を保持する方法について"
  • ComboBox の選択後のイベントは、TextChanged イベントで拾う | Moonmile Solutions Blog

    落とし穴、と言いますか、やっぱり ComboBox コントロールの落とし穴っぽい動きの話です。 ■問題 単純にフォームに ComboBox コントロールを貼り付けて、項目を選択した直後のイベントを拾いたい。 さてどうするのか? という要件があって、なんか手元のコードでは、SelectedIndexChanged イベントを拾っていた訳です。 SelectedIndexChanged イベントでも悪くはないのですが、ComboBox で項目を選択している途中のイベントも拾ってしまうので、【最後のイベントだけを拾う】ってのがなかなかでき難い、というか、これでバグっているので。 ■イベントは4種類ある あらためて ComboBox のイベントを見ると、それらしいものが4つほどあります。 ・SelectedIndexChanged イベント:選択項目が変更されるたびに発生する ・Selection

    JHashimoto
    JHashimoto 2011/10/01
    "そんな訳で、素直に TextChanged イベントを使うのが無難ですね…という結論でした。"
  • Ctrl+PrintScreen でアクティブなウィンドウをキャプチャする | Moonmile Solutions Blog

    手順書などを作るために画面のキャプチャをする時に、Alt+PrintScreen でアクティブな画面をキャプチャします。 が、メニューをキャプチャしたいときに【Alt】キーを押すと、そのメニューが消えてしまうんですよね。 なので、各種ツールを探すんですが…Ctrl+PrintScreen に割り当てればいいんじゃないの?ということで自作します。 Ctrl キーの場合は、メニューが閉じられませんからね。 こんな感じで、手軽にメニューもキャプチャできます。 ■アクティブウィンドウのキャプチャ using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] private struct RECT { public int left; public int top; public int right; publ

    JHashimoto
    JHashimoto 2011/09/10
    "なので、各種ツールを探すんですが…Ctrl+PrintScreen に割り当てればいいんじゃないの?ということで自作します。Ctrl キーの場合は、メニューが閉じられませんからね。"
  • VB/C#でトレースログを出力する方法 | Moonmile Solutions Blog

    C/C++ で言うところの、__FILE__ や __LINE__ を拾ってログ出力したい、という場合 次のような関数を作っておきます。 Public Class DebugTrace Public Shared Sub Trace() Dim sf = New StackFrame(1, True) Dim methodName As String = sf.GetMethod().ToString() Dim fileName As String = sf.GetFileName() Dim lineNumber As Integer = sf.GetFileLineNumber() MessageBox.Show(String.Format( _ "場所 {0} 場所 {1}:行 {2}", methodName, fileName, lineNumber)) End Sub End

    JHashimoto
    JHashimoto 2011/09/02
    "StackFrameクラスでは、Exceptionのように呼び出し元を再帰的に呼べるはずですが、ひとまずこれで用は足りるからよいかな、と。"
  • DataGridView から Excel へコピーすると文字化けする | Moonmile Solutions Blog

    Visual Studio 2010 と Excel 2010 の組み合わせだと発生しないのですが、 Visual Studio 2005 と Excel XP の間だと文字化けが発生します。 3流プログラマのメモ書き : (VB.Net)DataGridViewのショートカットキーでのコピー(Ctrl+C)をExcelに貼り付けると文字化けする http://jehupc.exblog.jp/9119842/ な感じで、Ctrl+C をフックしないと駄目か…と思っていたのですが、良い方法があったので up してきます。 1.DataGridView を継承して、ExDataGridView を作る。 2.以下のように GetClipboardContent をオーバーライドして Text フォーマットのみ返すようにする。 Public Overrides Function GetClip

    JHashimoto
    JHashimoto 2011/08/12
    2.以下のように GetClipboardContent をオーバーライドして Text フォーマットのみ返すようにする。"
  • Assembly.LoadFrom を使って別のアセンブリにあるフォームを起動する | Moonmile Solutions Blog

    試してみると、意外と素直に書けたのでメモ。 とあるプロジェクトで、フォームが100画面ほどある VB プロジェクトを作りました。 その VB プロジェクトを起動するときに、なんらかの形で、main window を切り替えたいという要望です。 # フォームごとにアセンブリを分ければ良いのですが、 # フォーム間で参照設定が多くて、結局ひとつのアセンブリにしないと循環参照が解決されない…という現象です。 # 当は、メモリ使用量を減らすために、個別に exe を作るのがいいんでしょうが。 フォームが 100 画面ほどある exe にパラメータを指定して、 FormCollection Form1 で起動します。 Module Startup Public Sub main(ByVal args() As String) ' 引数からクラス名を取得 Dim cname As String =

  • SqlBulkCopy のスピードは 20 倍ぐらい早い | Moonmile Solutions Blog

    SQL Server に insert を繰り返してデータを入れる場合は、 ・bcp を使う。 ・bulk insert を使う。 ・SqlBulkCopy を使う。 を使います。bcp や bulk insert の場合は、ファイルからインポートするのでちょっと扱いづらい。SQL Server が別のマシン(サーバー機)にある場合は、一度ファイル転送をするか、ファイル共有をしないといけないので、ちょっと面倒です。 なので、SqlBulkCopy を使う…ってところまでは知っていたのですが、果たしてどのぐらいのスピードかどうかは定かだではないので、測定してみました。 結論から言えば、20 倍ほど早くなります。SQL Server 2008 の場合は 30 倍ほど、SQL Server 2000 の場合は 10-20 倍ほどなので業務コードに入れる場合は実測が必須ですね。 以下は、 crea

    JHashimoto
    JHashimoto 2011/06/10
    "SQL Server に insert を繰り返してデータを入れる場合は、・bcp を使う。・bulk insert を使う。・SqlBulkCopy を使う。を使います。bcp や bulk insert の場合は、ファイルからインポートするのでちょっと扱いづらい。"
  • App_Dataフォルダにデータベースを作成できませんの対処 | Moonmile Solutions Blog

    ASP.NET MVC の プロバイダー データベースの自動作成の落とし穴 http://www.moonmile.net/blog/archives/980 の顛末について、書いておきます。 現象としては、 Visual Studio 2010 で作った、ASP.NET MVC のプロジェクトで、ログインしようとするエラーが発生する。 です。 エラーメッセージは、 ユーザー インスタンスのプロセスを起動中のエラーにより、SQL Server のユーザー インスタンスを生成できませんでした。接続は閉じられます。 ですね。 環境は、 Windows 7 Ultimate Visual Studio 2010 Professional SQL Server 2008 R2 Express Edition ですが、バージョンはあまり関係ありません。「SQL Server 2008 Express

    JHashimoto
    JHashimoto 2010/11/29
    "Visual Studio 2010 で作った、ASP.NET MVC のプロジェクトで、ログインしようとするエラーが発生する"