WinForm 子スレッドでコントロールの値を更新する方法

WBOY
リリース: 2024-01-22 12:03:18
転載
1174 人が閲覧しました

1. WinForm サブスレッドでコントロールの値を設定するにはどうすればよいですか?

WinForm では、子スレッドは UI コントロールを直接操作できませんが、コントロールの値は次のメソッドを通じて子スレッドで更新できます:

  1. Invoke メソッドを使用します。

    • 子スレッドで、コントロールの Invoke メソッドを通じてデリゲートを呼び出し、更新操作を実行します。 UIスレッド上で。サンプルコード:
    private void UpdateControlValue(string value)
    {
        if (control.InvokeRequired)
        {
            control.Invoke(new Action(() => { control.Text = value; }));
        }
        else
        {
            control.Text = value;
        }
    }
    ログイン後にコピー
  2. BeginInvoke メソッドの使用:

    • Invoke と同様 ただし、BeginInvoke は非同期であり、子スレッドをブロックしません。サンプルコード:
    private void UpdateControlValue(string value)
    {
        if (control.InvokeRequired)
        {
            control.BeginInvoke(new Action(() => { control.Text = value; }));
        }
        else
        {
            control.Text = value;
        }
    }
    ログイン後にコピー

上記の方法を使用すると、子スレッドで WinForm のコントロール値を安全に更新できます。

2. WinForm フォームの実行中に、そのフォームの下部にいくつかの画像をループで表示するにはどうすればよいですか?

WinForm フォームの下部にあるいくつかの画像を循環するには、Timer コントロールを使用してこれを実現できます。詳細な手順は次のとおりです。

  1. タイマー コントロールを追加します。

    • WinForm で、ツールボックスから をドラッグします。 Timer コントロールをフォームに追加します。
  2. Timer プロパティを設定します。

    • Timer# の Interval を設定します。 ## 画像を切り替える時間間隔 (ミリ秒) を示すプロパティ。
  3. PictureBox コントロールを追加します:

    • PictureBox コントロールを下部の領域に追加します。表示画像。
  4. 画像リストをロードします:

      コード内で画像リストを作成し、
    • Timer を使用します。 チェックを入れると、イベントが循環して画像が切り替わります。
      List<Image> imageList = new List<Image>(); // 存储图片的列表
      int currentIndex = 0; // 当前显示的图片索引
      
      private void LoadImages()
      {
          // 加载图片到imageList中
          imageList.Add(Properties.Resources.Image1);
          imageList.Add(Properties.Resources.Image2);
          // 添加更多图片...
      
          // 初始化PictureBox显示第一张图片
          pictureBox.Image = imageList[currentIndex];
      }
      ログイン後にコピー
  5. タイマー Tick イベント:

      Tick## at
    • Timer #イベントの PictureBox に表示される画像を更新します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:csharp;toolbar:false;">private void timer_Tick(object sender, EventArgs e) { // 循环切换图片 currentIndex = (currentIndex + 1) % imageList.Count; pictureBox.Image = imageList[currentIndex]; }</pre><div class="contentsignin">ログイン後にコピー</div></div>
  6. タイマーの開始:
  7. フォーム読み込みイベントで

    Timer
      を開始します。
    • private void Form_Load(object sender, EventArgs e)
      {
          LoadImages(); // 加载图片
          timer.Start(); // 启动Timer
      }
      ログイン後にコピー
    • 上記の手順により、WinForm フォームの下部にいくつかの画像をループで表示できます。

以上がWinForm 子スレッドでコントロールの値を更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:docexcel.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート