皆様、再びお世話になります。
VC++ .NET2005 CLIで画面系アプリケーションを開発しています。
現在
フォームAとフォームAから呼び出されたフォームBがあるのですがフォームBのデー
タをドラッグ&ドロップでフォームAに持っていきたいのです。
ネット等を駆使して調べておりますがネット環境が32Kのダイアルアップなので環境的に
かなり悲惨な状況です。
やり方等、教えていただけたら助かります。
すみません。。タイトルに修正です。。
「フォームBからフォームAへデータをドラッグ&ドロップしたい」です。
データとは具体的に何なのでしょうか?
また、フォームAとフォームBの関係はどうなっているのでしょうか?
フォームAからShowで表示している?
Blueさん
お世話になります。
データとはフォームA内で持っている変数に格納されている値です。
フォームAとフォームBの関係はフォームAからフォームBをShowしているのでフォー
ムAが親でフォームBが子の関係になります。
よくわからないのですけど。
普通ドラッグ&ドロップってのは、たとえば
FormAのテキストボックスの値をFormBのテキストボックスにとか
そういうものなのですが、
FormB全体をFormAにドロップするのでしょうか?
Blueさんへ
わかりづらくてすみません(><)
ドラッグ&ドロップ時にフォームBにある値をフォームAに渡したいだけです。
例えば
フォームB内にリスト表示されている一覧があってそこで選択したもの(中身はa=あい
うえお、b=かきくけこ)をドラッグ&ドロップでフォームAに渡してあげたいので
す。
フォームAで変数a内のあいうえおとb内のかきくけこが受け取れればOKです。
以下 フォームA→Form1,フォームB→Form2とする。
Form2のListBox1の選択したアイテムを
どこにドロップするのか微妙なのでForm1全体とすると
Form1の AllowDropプロパティをTrueにして
●Form1.h
private:
Void button1_Click(Object^ sender, EventArgs^ e)
{
Form2^ f = gcnew Form2();
f->Show();
}
Void Form1_DragEnter(Object^ sender, Windows::Forms::DragEventArgs^ e)
{
if (e->Data->GetDataPresent(ListBox::SelectedObjectCollection::typeid))
e->Effect = DragDropEffects::Copy;
else
e->Effect = DragDropEffects::None;
}
Void Form1_DragDrop(Object^ sender, Windows::Forms::DragEventArgs^ e)
{
Type^ t = ListBox::SelectedObjectCollection::typeid;
if (e->Data->GetDataPresent(t))
{
ListBox::SelectedObjectCollection^ item =
static_cast<ListBox::SelectedObjectCollection^>(e->Data->GetData(t));
// 表示して確認
String^ s;
for (int i = 0; i < item->Count; ++i)
s += item[i]->ToString() + L\n;
MessageBox::Show(s);
}
}
てな感じにして、
●Form2.h
private:
Void listBox1_MouseMove(Object^ sender, Windows::Forms::MouseEventArgs^ e) {
if (e->Button == Windows::Forms::MouseButtons::Left)
{
ListBox::SelectedObjectCollection^ items =
this->listBox1->SelectedItems;
if (items->Count > 0)
DragDropEffects dds =
this->listBox1->DoDragDrop(items, DragDropEffects::All);
}
}
とします。
※ソースコードは掲示板の表示の関係で整形してあります。
参考:
http://dobon.net/vb/dotnet/control/draganddrop.html
それと、C++/CLIの場合サンプルが非常に少ないので、
C#,VB.NETとあわせて探したほうが良いでしょう。
Blueさん
お返事が遅くなりすみません。
Blueさんのサンプルソースを少し改良して意図した操作が出来るようになりました。お
忙しい中ありがとうございました。C++/CLIのサンプルが非常に少ないのでいろいろと勉
強してがんばってみます。