私はアプリケーションでそれを実行せずにWindowsフォームを持っています。アプリケーションを使用しないフォームの処理
これはフォーム内で呼び出さなければならないコア関数です。いくつかのクラス変数があります。本当に重要なのは、closurepermissionだけです。ユーザはウィンドウを閉じるためにボタンを押さなければならない。
残念ながら、イベントを更新して処理することはできません。 this.Update()
、this.Refresh()
トリックはしません。
internal short ask(String question, String RegExFilter, out String answer)
{
this.RegExFilter = RegExFilter;
this.Text = question;
this.Show();
while (!closingpermission)
{
//Window needs to process its events and allow the user to interact.
}
answer = answerBox.Text;
this.Close();
return RetVal;
}
EDIT:
"アプリケーション" シングルトンアプリケーションを意味します - 私はそれを持っていけません。
ループはフォームを表示したままにしておく必要があります - 私はsoutionが何かであると思っていますHans Passantが書いています。私はメッセージループをポンピングする必要があります。
Ken2Kの解決策は私にとっては機能しません。
編集#2:ここでは
がコンパイル可能です。例 - 更新methos私の窓をリフレッシュするが、私はテキストボックスを編集することはできません - 用事ボタンまたは私はテキストで次に何をしますについて。私はテキストを編集することもできません。
using System.Windows.Forms;
using System.Drawing; //System.Drawing.dll
namespace StackOverFlowDemo
{
class Example
{
public static void Main()
{
Input input = new Input();
input.Ask("Something");
}
}
class Input : Form
{
TextBox textbox = new TextBox();
public Input()
{
this.Controls.AddRange(new Control[] { textbox });
this.Bounds = new Rectangle(0, 0, 500, 500);
this.textbox.Bounds = new Rectangle(10, 10, 480, 200);
}
internal void Ask(string question)
{
this.Text = question;
this.Show();
while (true)
{
this.Update();
}
}
}
}
編集#は3
私は私が行うことができない何をしたいと思います。私はトピックを読んで、あなたはいつもprotected override void WndProc(ref Message m);
と呼ぶ何かを必要としているようです。それはアプリケーションのようです。私は、アプリケーションを持たないアプリケーションでこれを行う方法を知らない。私と同意しないでください:)
わかりません。「アプリケーションなし」とはどういう意味ですか? – Steve
「アプリケーション」がないため、明らかに動作しません。フォームを有効に保つには、Application.Run()コールが必要です。メッセージループをポンピングします。またはForm.ShowDialog()。 –
[この質問](http://stackoverflow.com/questions/4721962/c-sharp-application-run-without-form)と承認された回答をご覧ください。 – Steve