フォームAからフォームBへデータをドラッグ&ドロップしたい – プログラミング – Home

フォームAからフォームBへデータをドラ...
 
通知
すべてクリア

[解決済] フォームAからフォームBへデータをドラッグ&ドロップしたい


KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

皆様、再びお世話になります。

VC++ .NET2005 CLIで画面系アプリケーションを開発しています。

現在

フォームAとフォームAから呼び出されたフォームBがあるのですがフォームBのデー
タをドラッグ&ドロップでフォームAに持っていきたいのです。

ネット等を駆使して調べておりますがネット環境が32Kのダイアルアップなので環境的に
かなり悲惨な状況です。

やり方等、教えていただけたら助かります。


引用未解決
トピックタグ
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

すみません。。タイトルに修正です。。

「フォームBからフォームAへデータをドラッグ&ドロップしたい」です。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

データとは具体的に何なのでしょうか?
また、フォームAとフォームBの関係はどうなっているのでしょうか?
フォームAからShowで表示している?


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

Blueさん

お世話になります。

データとはフォームA内で持っている変数に格納されている値です。
フォームAとフォームBの関係はフォームAからフォームBをShowしているのでフォー
ムAが親でフォームBが子の関係になります。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

よくわからないのですけど。

普通ドラッグ&ドロップってのは、たとえば
FormAのテキストボックスの値をFormBのテキストボックスにとか
そういうものなのですが、

FormB全体をFormAにドロップするのでしょうか?


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

Blueさんへ

わかりづらくてすみません(><)

ドラッグ&ドロップ時にフォームBにある値をフォームAに渡したいだけです。

例えば

フォームB内にリスト表示されている一覧があってそこで選択したもの(中身はa=あい
うえお、b=かきくけこ)をドラッグ&ドロップでフォームAに渡してあげたいので
す。

フォームAで変数a内のあいうえおとb内のかきくけこが受け取れればOKです。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

以下 フォーム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とあわせて探したほうが良いでしょう。


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

Blueさん

お返事が遅くなりすみません。

Blueさんのサンプルソースを少し改良して意図した操作が出来るようになりました。お
忙しい中ありがとうございました。C++/CLIのサンプルが非常に少ないのでいろいろと勉
強してがんばってみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました