7

私は、空の DataGridViews を多数含む C# アプリケーションに取り組んでいます。ユーザーは、Excel からコピー/貼り付けされたデータを入力する必要があります。私がすることは次のとおりです。

int i = 0;
string s = Clipboard.GetText();

// Separate lines
string[] lines = Regex.Split(s, "\r\n");
foreach (string line in lines)
{
    // Separate each cell
    string[] cells = line.Split('\t');
    foreach (string cell in cells)
    {
        // If we selected as many cells as copied
        if (dataGridView.SelectedCells.Count == (lines.Length-1)*(cells.Length))
        {
            dataGridView.SelectedCells[i].Value = cell;
            i++;
        }
    }
}

問題は、このようなものを(Excelで)コピーした場合:

1   2   3
4   5   6

私のデータグリッドビューは次のようになります。

6   4   2
5   3   1

これを修正するために何をすべきか本当にわかりません...よろしくお願いします

4

2 に答える 2

2
  1. クリップボードのデータを 2 次元配列に変換します。各次元の長さを覚えておいてください。
  2. 選択したセルを繰り返し処理し、左上と右下のセルを見つけます。そこからサイズが合っているか判断できます。
  3. 二重ループを使用して、左上のセル座標をオフセットとして使用して、(選択したセルを使用せずに) クリップボード データを配列位置から直接セル座標にマップします。

または、2 次元配列ではなく、プロパティ Row、Col、および Value を含む小さなクラス/構造体の List を作成できます。次に、二重ループではなく、それを反復します。

于 2012-04-11T22:08:09.520 に答える
1

交換

dataGridView.SelectedCells[i].Value = cell;

dataGridView.SelectedCells[(dataGridView.SelectedCells.Count-1) - i].Value = cell;

于 2012-04-11T17:39:32.153 に答える