xxxxプログラマのメモ

先人に感謝と敬意:自分の困ったこと調べたことのメモ

型によるSwitch #switch by object type

条件分岐 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

                switch (inputControl)
                {
                    case NumberTextbox _:
                        break;
                    case TextBox _ when string.IsNullOrWhiteSpace(inputControl.Text):
                        isValid = false;
                        lblControl.ForeColor = ColorDefs.AlertForeColor;
                        break;
                    case TextBox _:
                        lblControl.ForeColor = tableLayoutPanel.Parent.ForeColor;
                        break;
                    case ComboBox box when box.SelectedIndex < 0:
                        isValid = false;
                        lblControl.ForeColor = ColorDefs.AlertForeColor;
                        break;
                    case ComboBox box:
                        lblControl.ForeColor = tableLayoutPanel.Parent.ForeColor;
                        break;
                }

Thanks!

多重起動制御

二重起動を禁止する - .NET Tips (VB.NET,C#...)

/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
    //Mutex名を決める(必ずアプリケーション固有の文字列に変更すること!)
    string mutexName = "MyApplicationName";
    //Mutexオブジェクトを作成する
    System.Threading.Mutex mutex = new System.Threading.Mutex(false, mutexName);

    bool hasHandle = false;
    try
    {
        try
        {
            //ミューテックスの所有権を要求する
            hasHandle = mutex.WaitOne(0, false);
        }
        //.NET Framework 2.0以降の場合
        catch (System.Threading.AbandonedMutexException)
        {
            //別のアプリケーションがミューテックスを解放しないで終了した時
            hasHandle = true;
        }
        //ミューテックスを得られたか調べる
        if (hasHandle == false)
        {
            //得られなかった場合は、すでに起動していると判断して終了
            MessageBox.Show("多重起動はできません。");
            return;
        }

        //はじめからMainメソッドにあったコードを実行
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    finally
    {
        if (hasHandle)
        {
            //ミューテックスを解放する
            mutex.ReleaseMutex();
        }
        mutex.Close();
    }
}


Thanks!

WindowsForm Tips

DataGridView

  1. Windowsフォームの表示直後に初期化処理を行うには?[2.0のみ、C#、VB]:.NET TIPS - @IT
  2. c# - DataGridView: Scroll down automatically only if the scroll is at the bottom - Stack Overflow
  3. winforms - Scroll to bottom of C# DataGridView - Stack Overflow
  4. DataGridViewで複数行選択できないようにして、セルを選択すると行全体が選択されるようにする - .NET Tips (VB.NET,C#...)
  5. DataGridViewのある列の値を小数点第2位までしか表示させないようにする - TIL
  6. DataGridViewの指定した列や行を固定してスクロールされないようにする - .NET Tips (VB.NET,C#...)
  7. MethodInvokerの水平展開… - Qiita
  8. スレッド セーフなコントロールの呼び出し | C# プログラミング解説

Form

  1. Windowsフォームのロード時に任意のコントロールへフォーカスを設定するには?:.NET TIPS - @IT

Thanks!

Powershell Tips

PowerShell/ファイル作成/ショートカット(lnk)の作成 - yanor.net/wiki

Powershell で読み取り専用属性を変更する - Qiita

# Remove readonly attribute.
foreach($file in ((Get-ChildItem $ApiContentsPath -Recurse)| Where-Object { $_.IsReadOnly -eq $True }))
{Set-ItemProperty -path $file.FullName -name IsReadOnly -value $false}