2

私の WinForms アプリケーションでは、ボタンを押すと次のロジックがトリガーされます。

    private void ExecuteSelectedConsoleCommand()
    {
        var commandsRow = GetCommandsRow();
        var consoleCommand = GetConsoleCommand(commandsRow);
        Task.Factory.StartNew(() =>
        {
            var runningCommandRow =
                  runtimeDataSet.RunningCommands.AddRunningCommandsRow(Guid.NewGuid(),
                  consoleCommand.OneLineDescription);

            consoleCommand.Run(null);

            runningCommandRow.Delete();
        });
    }

BindingSource は、DataGridView が自動的に更新されるようにするために使用されます。

今のところ、次のハックがなければ、「インデックス 0 は無効です」というエラーが表示されます。

        // prevents error when removing last row from data bound datagridview
        var placeholder = runtimeDataSet
                             .RunningCommands
                             .AddRunningCommandsRow(Guid.NewGuid(), "PLACEHOLDER");

上記のコードでは、DataGridView に少なくとも 1 つの行が常に存在するようになり、正常に動作します。

これを修正するにはどうすればよいですか?

注: これは、他の多くの人が遭遇したことのように思えますが、私の Web 検索は失敗しました..

4

1 に答える 1