2013年12月1日日曜日

Windows8 でスピーカー音量が小さいときは

Windows8 でスピーカー音量を最大にしているのに、なんだか音量が小さい。そういう時にはサウンドのラウドネス イコライゼーションを確認してみてください。コントロールパネルからたどることができます。












ラウドネス イコライゼーションにチェックを付けて「適用」もしくは「OK」を押します。

2013年10月12日土曜日

Windows Forms でマウスカーソルを判定する

Windows Forms ではフォーム上のマウスカーソルの形状を確認したり、明示的に変更することができます。

↓ボタンコントロールでの簡単な例です。

private void button1_MouseEnter(object sender, EventArgs e)
{
    // マウスカーソルの形状を判定
    if (Cursor.Current == Cursors.Arrow)
    {
        (sender as Button).Cursor = Cursors.Hand;
    }
}

private void button1_MouseLeave(object sender, EventArgs e)
{
    (sender as Button).Cursor = Cursors.Arrow;
}


Cursors クラス

2013年10月5日土曜日

Windows Forms で Tab キー入力をイベント処理する

Windows Forms では、ユーザー コントロールに対する様々なキー入力をイベント ハンドルすることができますが、Tab キーはフォームレベルで管理されているためユーザー コントロール レベルではイベント が発生しません。ユーザー コントロール上で Tab キー入力をハンドルするには、ProcessCmdKey をオーバーライドします。

TextBox の場合:
class MyTextBox : TextBox
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Tab)
        {
            // ここにロジックを実装
            Debug.WriteLine("Tab が押されました。");
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
}


Control.ProcessCmdKey メソッド

2013年9月28日土曜日

JavaScript - String.Contains メソッドの登録

以前JavaScript - String.Contains メソッドの代わりの記事で C# で用意されている String.Contains と同じ働きをするメソッドを紹介しました。このような自作メソッドを String の prototype に登録することで、JavaScript でも String 変数から Contains メソッドを呼び出すことができるようになります。(ここでの登録名は contains です。)
ちなみに、第二引数の走査開始インデックスは省略可能です。

        window.onload = function () {
            if (!('contains' in String.prototype)) {
                String.prototype.contains = function (targetStr, searchStartIndex) {
                    return -1 !== String.prototype.indexOf.call(this, targetStr, searchStartIndex);
                };
            }
        };
        function StringCheck() {
            var target = "One day in summer, a boy met a girl.";
            var result = target.contains("summer", 0);
        }

<input type="button" value="Contains test" onclick="StringCheck()" />

参考:String.contains

2013年9月12日木曜日

C# - DateTime.DaysInMonth 特定日からその月の全日を取得する

特定日からその月の全日を取得する方法が無いかを探していたら、DateTime に DaysInMonth というメソッドが用意されていました。
これは便利やー!!ということで早速利用してみました。DaysInMonth メソッド自体は月の持つ日数を返すだけなので、日数分ループして日付を用意しています。

protected void Page_Load(object sender, EventArgs e)
{
    // 日を保存するリスト
    List<DateTime> days = new List<DateTime>();

    // 来月の日付を取得
    DateTime nextMonth = DateTime.Today.AddMonths(1);

    // DateTime.DaysInMonth を使って選択日の月の日数を取得
    int daysInNextMonth = DateTime.DaysInMonth(nextMonth.Year, nextMonth.Month);

    // 日数分カレンダーに追加
    for (int i = 0; i < daysInNextMonth; i++)
    {
        DateTime date = new DateTime(nextMonth.Year, nextMonth.Month, i + 1);

        days.Add(date);
    }
}

参考:DateTime.DaysInMonth メソッド

2013年8月24日土曜日

C# で JSON を扱う JSonConvert の名前空間

Newtonsoft.Json DLLC# で JSON を扱う JSonConvert 名前空間は、Newtonsoft.Json DLL に含まれています。
Newtonsoft.Json DLLNuGet から "Newtonsoft.Json" で検索して表示される "Json.NET" を追加すると自動的にプロジェクトに参照が追加されます。
Newtonsoft.Json DLL

2013年8月23日金曜日

JavaScript: setTimeout を使った処理の遅延

クライアントサイドプログラミングをしている時、特に jQuery でアニメーション効果が有効になっていると、イベント発生時にターゲットとなる HTML エレメントが生成されていなくて思い通りのロジック実装ができない・・・ということがままあると思います。
こんな時はアニメーションに続く処理を少し遅らせることで問題のワークアラウンドができたりします。今回は setTimeout を使った処理開始遅延の実装例をご紹介・・・。

<head runat="server"> <!-- jQuery を使う場合は参照を追加します --> <script src="jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#timeout").click(function () { setTimeout(function () { alert("delayed!!"); // 実際の処理 }, 2000); // ボタンクリックのタイミングから 2 秒遅らせます。 }); }); </script> </head> <body> <input id="timeout" type="button" value="timeout"/> </body>

2013年8月12日月曜日

debugger による JavaScript でのデバッグ

JavaScript でデバッグする方法はいくつかありますが、デバッグ時にウォッチから変数の値やメソッドを確認する場合には debugger キーワードが便利です。

例:FireFox の Firebug で実行しているところです。
Firebug debugger