タグ付けされた質問 「winforms」

WinFormsは、Microsoft .NET FrameworkおよびMonoのGUIクラスライブラリであるWindows Formsに付けられた非公式の名前です。このタグ内の質問は、ターゲットフレームワーク([.net]または[mono])でもタグ付けする必要があり、通常はプログラミング言語タグでタグ付けする必要があります。


7
Visual Studio 2010が突然名前空間を認識できなくなりましたか?
私のC#WinFormsソリューションには2つのプロジェクトがあります。私が取り組んでいるメインプロジェクトであるDLLと、DLLを一度に簡単にコンパイル/実行/デバッグできるように「サンドボックス」と呼ぶ実行可能WinForms。 私は両方のプロジェクトで.Net4.0で作業しています。 一見無害に見えるコードと、DLLにSystem.Webへの参照を追加するまで、すべてが正常に機能していました。これで、サンドボックスプロジェクトはDLLプロジェクトの名前空間を見ることができません。これに影響を与えるはずだったと思うものは何も変更しませんでした。 DLLへのプロジェクト参照をサンドボックス参照から削除して再度追加すると、赤い下線がすべて消え、すべてのクラスなどで色分けが返されます。しかし、私がソリューションを構築しようとするとすぐに、すべてが再び崩壊します。 サンドボックスの参照でDLLプロジェクトを右クリックし、オブジェクトブラウザーで表示すると、名前空間とそこにあるすべてのものが表示されます。 これはある種のバグかもしれないと私は感じていますか? これはVS2010のバグのようなものですか?数か月前に同じ問題が発生しましたが、当時はまったく新しいプロジェクトを作成してファイルを再インポートすることでしか修正できませんでした。ただし、今回は数百万のファイルがあり、最後の手段としてのみ実行します。 編集:パニックになってすべての変更をやり直し、問題の原因を見つけようとした後、次の行のようです: string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address); この行をコメントアウトすると、名前空間エラーは発生せず、プロジェクトは正常にビルドされます。しかし、この行には何の問題もありません。

2
BackgroundWorkerのタスク並列ライブラリの置き換え?
タスク並列ライブラリには、BackgroundWorkerクラスの置き換えまたは改善と見なされるものがありますか? ウィザードスタイルのUIを備えたWinFormsアプリケーションがあり、長時間実行されるタスクを実行します。標準のプログレスバーと操作をキャンセルする機能を備えたレスポンシブUIを使用できるようにしたいと考えています。以前にBackgroundWorkerでこれを実行しましたが、代わりに使用できるTPLパターンがいくつかあるかどうか疑問に思っています。

5
ListViewへのアイテムの追加を高速化するにはどうすればよいですか?
WinForms ListViewに数千(例:53,709)のアイテムを追加しています。 試行1:13,870 ms foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } これは非常にうまくいきません。明らかな最初の修正は、を呼び出すことBeginUpdate/EndUpdateです。 試行2:3,106 ms listView.BeginUpdate(); foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } listView.EndUpdate(); これは優れていますが、それでも桁違いに遅すぎます。ListViewItemsの作成とListViewItemsの追加を分けて、実際の原因を見つけましょう。 試行3:2,631 ms var items = new List<ListViewItem>(); foreach (Object o …

4
.NETでエラーと警告のメッセージボックスを表示する方法/メッセージボックスをカスタマイズする方法
C#.NET(Winforms)を使用します。 Ding!!音と赤い十字マークが入ったメッセージボックスを表示する方法を知りたいです。これは私が話していることです: カスタムエラーとカスタム警告を使用して、ソフトウェアに対してそのようなことを行う方法は? MessageBox.Show("asdf"); 私にカスタマイズを与えません。
83 c#  .net  winforms 


18
C#で毎日特定の時間にメソッドを呼び出す方法は?
SOで検索し、Quartz.netに関する回答を見つけました。しかし、それは私のプロジェクトには大きすぎるようです。同等のソリューションが必要ですが、よりシンプルで(せいぜい)インコードです(外部ライブラリは必要ありません)。毎日、特定の時間にメソッドを呼び出すにはどうすればよいですか? これに関するいくつかの情報を追加する必要があります: これを行う最も簡単な(そして醜い)方法は、毎秒/分ごとに時間をチェックし、適切なタイミングでメソッドを呼び出すことです。 これを行うためのより効果的な方法が必要であり、時間を常にチェックする必要はなく、ジョブが実行されるかどうかを制御できます。メソッドが失敗した場合(問題が原因で)、プログラムはログに書き込む/電子メールを送信することを知っている必要があります。そのため、ジョブをスケジュールするのではなく、メソッドを呼び出す必要があります。 私はこの解決策を見つけましたJavaのJavaで決まった時間にメソッドを呼び出します。C#にも同様の方法がありますか? 編集:私はこれをしました。void Main()にパラメーターを追加し、このパラメーターを使用してプログラムを実行するためのバット(Windowsタスクスケジューラによってスケジュールされた)を作成しました。プログラムが実行され、ジョブが実行されてから終了します。ジョブが失敗した場合、ログを書き込んだり、メールを送信したりできます。このアプローチは私の要件によく合います:)

10
DataGridViewの自動調整と塗りつぶし
に3つの列がありますDataGridView。私がやろうとしているのは、最初の2列をコンテンツの幅に自動的に合わせ、3列目を残りのスペースに埋めることです。 WinFormsで実行することは可能ですか?EF DataContextを使用する場合は、データをロードしています。私はそれが現在どのように見えるかの画像を含めました。



3
KeyDownイベントに応答しないフォーム
私はしばらくの間Windowsフォームプロジェクトに取り組んできましたが、キーボードショートカットを試すことにしました。少し読んだ後、イベントハンドラーを作成して、フォームのKeyDownイベントにバインドする必要があると考えました。 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.Alt && e.KeyCode == Keys.O) { MessageBox.Show("Ctrl+Alt+O: magic!"); } } Visual Studioデザイナの[プロパティ]パネルを開き、フォームのKeyDownイベントをダブルクリックして、Form1_KeyDownイベントハンドラーを生成するという古き良き方法を実行しました。しかし、私のアプリケーションをテストするには、フォームはにまったく応答しないCtrl+ Alt+Oキーボードショートカット。ただし、Visual Studioデザイナーは、イベントハンドラーをフォームにバインドするコードを生成しました。 private void InitializeComponent() { // ... this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); // ... } そこでConsole.WriteLine()、ハンドラーに呼び出しを追加して、呼び出されていることを確認しようとしましたが、それもうまくいきませんでした。 また、イベントバインディング呼び出し(すぐ上に表示)にブレークポイントを設定しようとしましたが、プログラムがそのブレークポイントに問題なく到達することがわかりました。ただし、メソッド定義自体に設定したブレークポイントには到達しません。 最初のいくつかの手順を正しく実行していることを確認するために、次の手順で繰り返してみました。 同じソリューションの新しいフォーム。 同じ問題:Ctrl+ Alt+Oキーボードショートカットを押してもフォームが応答せず、デバッガーがイベントハンドラーにステップインしません。 これをもう一度試してみましたが、機能します。 まったく新しいWinFormsソリューション。 完全に機能します。メッセージダイアログが表示されます(Console.WriteLine()呼び出しも機能します)。 だから私はここでかなり迷っています。この1つのプロジェクトのすべてのフォームがKeyDownイベントを受信するのを妨げているのは何ですか?
82 c#  .net  winforms 


10
ウィンドウハンドルが作成されるまで、コントロールでInvokeまたはBeginInvokeを呼び出すことはできません。
Greg Dがここで説明しているものと同様のSafeInvokeControl拡張メソッドがあります(IsHandleCreatedチェックを除く)。 私はそれSystem.Windows.Forms.Formを次のように呼んでいます: public void Show(string text) { label.SafeInvoke(()=>label.Text = text); this.Show(); this.Refresh(); } 場合によっては(この呼び出しはさまざまなスレッドから発生する可能性があります)、次のエラーが発生します。 System.InvalidOperationException 発生した Message= "ウィンドウハンドルが作成されるまで、コントロールでInvokeまたはBeginInvokeを呼び出すことはできません。" Source= "System.Windows.Forms" StackTrace: at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at System.Windows.Forms.Control.Invoke(Delegate method) at DriverInterface2.UI.WinForms.Dialogs.FormExtensions.SafeInvoke[T](T control, Action`1 action) in C:\code\DriverInterface2\DriverInterface2.UI.WinForms\Dialogs\FormExtensions.cs:line 16 何が起こっているのですか、どうすれば修正できますか?フォーム作成の問題ではないことはわかっています。一度は機能し、次回は失敗することがあるので、問題は何でしょうか。 PS。私は本当にWinFormsでひどいです、誰かがモデル全体とそれを扱う方法を説明する良いシリーズの記事を知っていますか?

12
数秒後にMessageBoxを閉じます
メッセージを表示するためのMessageBoxを表示するWindowsフォームアプリケーションVS2010C#があります。 大丈夫なボタンがありますが、ボタンが消えた場合は、タイムアウトして、たとえば5秒後にメッセージボックスを閉じ、メッセージボックスを自動的に閉じます。 カスタムMessageBox(Formから継承)または別のレポーターFormsがありますが、Formである必要はありません。 それについての提案やサンプルはありますか? 更新しました: WPFの場合 C#でメッセージボックスを自動的に閉じる カスタムメッセージボックス(フォーム継承を使用) http://www.codeproject.com/Articles/17253/A-Custom-Message-Box http://www.codeproject.com/Articles/327212/Custom-Message-Box-in-VC http://tutplusplus.blogspot.com.es/2010/07/c-tutorial-create-your-own-custom.html http://medmondson2011.wordpress.com/2010/04/07/easy-to-use-custom-c-message-box-with-a-configurable-checkbox/ スクロール可能なメッセージボックス C#のスクロール可能なメッセージボックス 例外レポーター /programming/49224/good-crash-reporting-library-in-c-sharp http://www.codeproject.com/Articles/6895/A-Reusable-Flexible-Error-Reporting-Framework 解決: たぶん、フォームを使わずに、次の答えが良い解決策だと思います。 https://stackoverflow.com/a/14522902/206730 https://stackoverflow.com/a/14522952/206730

15
WebBrowserコントロールにJavascriptを挿入する方法は?
私はこれを試しました: string newScript = textBox1.Text; HtmlElement head = browserCtrl.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = browserCtrl.Document.CreateElement("script"); lblStatus.Text = scriptEl.GetType().ToString(); scriptEl.SetAttribute("type", "text/javascript"); head.AppendChild(scriptEl); scriptEl.InnerHtml = "function sayHello() { alert('hello') }"; scriptEl.InnerHtmlとscriptEl.InnerTextの両方でエラーが発生します。 System.NotSupportedException: Property is not supported on this type of HtmlElement. at System.Windows.Forms.HtmlElement.set_InnerHtml(String value) at SForceApp.Form1.button1_Click(Object sender, EventArgs e) in d:\jsight\installs\SForceApp\SForceApp\Form1.cs:line 31 at System.Windows.Forms.Control.OnClick(EventArgs …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.