- 題名: DataGridのコピー
- 日時: 2005/02/28 14:23:07
- ID: 9385
- この記事の返信元:
- (なし)
- この記事への返信:
- [9386] Re[1]: DataGridのコピー2005/02/28 14:40:58
- ツリーを表示
こんにちは、じゃんぬねっと です。 ■No9534に返信(はるさんの記事) > Dim keyCode As Keys = CType(keyData & Keys.KeyCode, Keys) > をどうするかということなんですよね? > > Ctype(KeyData,keys) + CType(Keys.Code,Keys) > ・・・何が何だかわからなくなってきました。・・・ えっと、単純に [Ctrl] + [C] を捕捉するんじゃないんですか? CType を使わなくとも、Keys 列挙体の型に合わせることができます。 でも、CType() とかわざわざ書いてあるから、私の検討違いですかね...。 もっと複雑なことやろうとしているのでしょうか? Protected Overrides Function ProcessCmdKey(...) As Boolean If keyData = (Keys.Control Or Keys.C) Then MessageBox.Show("[Ctrl] + [C] が押下されたYo!") '/ TODO : ここにコピー処理を実装 End If Return MyBase.ProcessCmdKey(msg, keyData) End Function
おはようございます、じゃんぬねっと です。 捕捉です。 ■No9552に返信(はるさんの記事) > 単純に[ctrl]+[c]で捕捉すればよかったのですね。(汗) > C→VBに変換する所があったので、そのまま使用していました。 ちなみに C# も、 Keys keyCode = (Keys)(int)keyData & Keys.KeyCode; if ((keyData & Keys.Control) == Keys.Control && keyCode == Keys.C) { // 選択された文字列をコピーするコードを書く return true; } ではなく、 if (keyData == (Keys.Control | Keys.C)) { // TODO : ここにコピーを実装 return true; } のように実装する方が素直です。 Enum のパラメタ結合は、「+」ではなく、「|」(VB.NET だと Or) でやるべきです。 「+-」または「*/」の四則演算子は、int または double に置き換わります。 そのため、ムダなキャストが必要になってしまいます。
DataGridの項目を「Ctrl + C」でコピーすると、選択されている行全てがコピーされてしまいます。右クリックでコピーを行うと選択されている項目がけがコピーされます。選択している項目だけをコピーする場合はどうすればよいのでしょうか?