質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

365閲覧

親フォームから独立したフォームでドラッグアンドドロップをしたい。

KimuGimp

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

1グッド

0クリップ

投稿2023/12/03 03:17

前提

C#でフォームを起動するときにこのエラーが出ました。
System.InvalidOperationException: DragDrop 登録は成功しませんでした。

エラーの箇所

this.AllowDrop = true;

おおよその原因?

ほぼほぼ原因はわかっていて、多分ですが、フォームの起動の仕方に誤りがあると思います。
new Thread(() => { Application.Run(new Form1()); }).Start();

なぜそうしているか?

親フォームから独立したフォームを表示したいから。

実現したいこと

前提で書いたエラーを解消すること。
もしくは他のフォームの起動法を知りたいです。

補足情報

言語:C#
プロジェクトの種類:WindowsForm
IDE:VisualStudio

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2023/12/03 06:02

「独立」とはどういう状態を言いたいのでしょうか? 普通に該当フォームをnewしてshowするのとは違うのですか?
KimuGimp

2023/12/03 06:05

Form1からForm2を開いて、 Form1を閉じてもForm2も一緒に閉じないようにしたいです。
TN8001

2023/12/03 06:52

> Form1を閉じてもForm2も一緒に閉じないようにしたいです。 こういったことでしょうか? [WindowsForms で OnLastWindowClose](https://teratail.com/questions/44658) [ApplicationContext クラス (System.Windows.Forms) | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.applicationcontext) WPFならプロパティひとつなんですが。。。 [Application.ShutdownMode プロパティ (System.Windows) | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.application.shutdownmode)
KimuGimp

2023/12/03 12:41

ありがとうございます。 実際に試してみたらところうまく動きました!
KimuGimp

2023/12/03 12:47

すいません。TN8001さんをベストアンサーにしたいのですが、 ベストアンサーのボタンが出てきません。 なのでなにかしら回答をくださるとありがたいです。
TN8001

2023/12/03 12:58

ggっただけなんでKimuGimpさんで簡単にまとめていただいて自己解決で結構です。 [ヘルプ|質問をした後に自己解決してしまった](https://teratail.com/help#resolve-myself)
guest

回答1

0

ベストアンサー

ApplicationContext クラスのドキュメントって、結構面倒なことをやっているのですが、次のようなコードでOKです。

csharp

1using System; 2using System.Windows.Forms; 3 4internal static class Program 5{ 6 [STAThread] 7 static void Main() { 8 Application.EnableVisualStyles(); 9 Application.SetCompatibleTextRenderingDefault(false); 10 Application.Run(new MyApplicationContext(new Form1())); 11 } 12 13 class MyApplicationContext : ApplicationContext 14 { 15 public MyApplicationContext(Form form) : base(form) { } 16 17 protected override void OnMainFormClosed(object sender, EventArgs e) { 18 foreach (Form f in Application.OpenForms) { 19 if (!f.InvokeRequired) { 20 MainForm = f; 21 return; 22 } 23 } 24 base.OnMainFormClosed(sender, e); 25 } 26 } 27}

メインフォームが閉じられたら Application.OpenForms を列挙し、同一スレッドのフォームがある場合、それをメインフォームにします。

投稿2023/12/04 02:05

編集2023/12/04 05:50
KOZ6.0

総合スコア2626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問