C#でフォームを非アクティブで最前面に表示する

f:id:kidd0320:20170316163006j:plain
今までフォームを最前面に表示するときはフォームのTopMostプロパティをtrueにして対応してきたが、全画面表示されるもの(ゲームやメディアプレイヤー)を起動した時に最前面表示ではなくなっていた。

どうにかどんな時も最前面表示できないかと調べてみたら、どうやらWin32APIのSetWindowPosを使えば出来るようだ。

続きを読む

C# NumericUpDown ValueChanged でエラーが発生しない

NumericUpDownのValueChangedイベント内でエラーが発生しないことがある。

ValueChangedが発生する条件
  1. 違う値を入力した状態でエンターキー押下
  2. 違う値を入力した状態でフォーカスを他に移動
  3. マウスホイールのスクロール
  4. 上下ボタンのクリック
  5. 他のイベント中にNumericUpDown.Valueに違う値を代入


このValueChangedイベント内でわざとエラーを発生させる。

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    throw new Exception("ERROR");
}
するとこのうち、1と2でイベント発生した場合にエラーが発生しない。

解決方法

不明。

try_catchで囲むと発生した事はわかるので、そこで解決すればOK。

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    try{
        throw new Exception("ERROR");
    }catch(Exception ex){
        // ここには来る
    }
}

まぁ、ちゃんとエラー対策しておけば何の問題もない話だったり。
デバッグ中にエラー発生させようとして発生しなかったからビックリした。