こんちは。最近C#をやり始めて行き詰まったので質問致します。
質問内容に対する答えをお持ちの方がいらっしゃいましたら、お暇な時にでもお答えください。
public Class SumLoop {
public Keisan(int Cnt, string Msg) {
// (1)プログレスバーのフォーム生成時に変数Cntをプログレスバーの最大値、変数Msgをフォームのタイトルに設定したい。
FormProgress FrmPro = new FormProgress();
Thread thread = new Thread(new ThreadStart((2)) );
thread.Start();
for(int i=0; i<Cnt; i++) {
// (3)このiがインクリメントする度にプログレスバーのValueを増やしたい
// FrmPro.SetProgressValue(i) // これだとコンパイラに怒られた
// ここに主な処理
}
}
public partial class FormProgress : System.Windows.Forms.Form {
public FormDfmProgress() { InitializeComponent(); }
// (3)これではダメみたい
public void SetprogressValue(int iValue) {
progressBar1.Value = iValue;
progressBar1.Refresh();
}
// (4)他のイベントが必要?
}
ざっと汚いコードを書きましたが具体的にお知恵を貸して頂きたいところは
(1)のフォーム生成時のパラメータをどう与えるのか?
インスタンス作成の際にここで言うFormDfmProgressをthisで継承させオーバーロードさせれば良いんでしょうか?
(2)プログレスバーのフォームを表示させたいだけなのですが、.ShowDialog()では怒られ、.Showでは即座にフォームが消えたりでどうにもなりません。スレッドが消えるまで表示させるにはどうしたらいいでしょう?
(3)フォーム側のプログレスバーのValueなり、変数なりをスレッド稼動中に更新させるにはどうしたらいいでしょうか?
(4)は、大して気にしていないのですが、これが致命的に足りない!とかいうのがあればご指導願います。
以上長々となりましたが、お暇な方お力を御貸しください
No.2
- 回答日時:
この部分は スレッド作成するイベント側で記述します
Thread thread = new Thread(new ThreadStart((2)) );
thread.Start();
(2)はデリゲートを指定しますので 引数なしのデリゲート用関数を用意します
FormProgressのキャプション(タイトル)の変更は Textプロパティでできます
Public Class SumLoop
{
public int nCnt = 0;
public String sMsg = "";
public void keisan()
{
FromProgress frm = new FormProgress();
frm.Text = sMsg;
frm.setProgrssMax( nCnt );
frm.Show();
for( int i = 0; i < nCnt; i++ ) {
frm.setProgressValue( i );
Thread.Sleep( 10 );
}
}
}
ProgessBarの最大値は Maximumプロパティを操作するので 外部から扱えるようにメソッドを追加しましょう
public void setProgressMax( int nMax )
{
progressBar1.Maximum = nMax;
}
スレッド起動側のイベントで
SumLoop objSL = new SumLoop();
objSL.nCnt = 200;
objSL.sMsg = "タイトル";
Thread thread = new Thread( new ThreadStart( objSL.Keisan ) );
thread.Start();
といった具合でしょう
わざわざコードまで付けて頂いて恐縮です。
ただ、こちらの方法では計算(Keisanメソッド)をスレッド化するようです。
私のコードと質問内容の書き方が悪いといえばそれまでですが
Keisanメソッドが言わばMainのような形で、フォームやらその他のメソッドは常にKeisanメソッドの従としたいのでした。
後学の参考とさせて頂きます。
No.1
- 回答日時:
こういうときには、BackgroundWorker という便利なものがありますので、そちらを使いましょう。
http://www.atmarkit.co.jp/fdotnet/dotnettips/436 …
http://msdn.microsoft.com/ja-jp/library/system.c …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
-
4
C#で別のフォームのprogress barを操作
その他(プログラミング・Web制作)
-
5
C# dataGridViewの値だけクリア
C言語・C++・C#
-
6
C#でbyte配列から画像を表示させたい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
大量のデータを読み込んで表示...
-
C#でのWNetAddConnection3の使...
-
Processingでマウスクリックで...
-
Thread.sleepのInterruptedExce...
-
【java】座標の値をテキストフ...
-
Javaでパラパラアニメを作成す...
-
Visual C♯ フォーム間での値の...
-
文字コードチェックについて
-
【C#】ソースコードをファイル...
-
iアプリ 複数パネル切替時の変...
-
配列の受け渡し
-
Javaの課題について質問です。...
-
フェードアウト時にぶちっと画...
-
ジャバスクリプトについて。
-
[JAVA]try 内の変数を外で!?
-
ダブルクォーテーションのrepla...
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
C# visibleプロパティをfalseに...
-
unityでのC++エラーの原因がわ...
-
ボタンの複数割り当てについて
-
C#で別のFormへ複数の値を返そ...
-
エンターキーを押すとOKボタン...
-
LVM_SETITEMSTATEでListViewの...
-
ユーザーコントロールを動的に...
-
[C#.net]スレッド化された別フ...
-
C# 矢印キーの取得
-
C#から、C++で作成したdll内の...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
Thread.sleepのInterruptedExce...
-
C#でのオブジェクトのコピーに...
-
C# 半角カナの文字化けについて
-
文字列の置換
おすすめ情報