c#普通类调用窗体控件

 

以主窗体中pictureBox1为例

c#普通类调用窗体控件_第1张图片

在主窗体中引入pictureBox和button控件,pictureBox引入图片,效果如上图所示。

控件的Modifiers属性修改为public

在公共变量区域增加  public static Form1 form1;

c#普通类调用窗体控件_第2张图片

增加一个普通类drew.cs

c#普通类调用窗体控件_第3张图片

在增加类中编写Roll()函数;注意:主窗体控件已可调用。

c#普通类调用窗体控件_第4张图片

回到Form1.cs[设计]中,双击button按钮,进入 button1_Click(object sender, EventArgs e)事件,写入代码如下:

c#普通类调用窗体控件_第5张图片

编译运行可以看到,头像在窗口上面不停晃动。

c#普通类调用窗体控件_第6张图片

drew.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace XIANCHENG_CHUANGTI
{
    
    class drew
    {
        int x = 12;//定义图标初始横坐标位置    
        public void Roll()
        {
            while (x <= 260)// 设置循环条件
            {
                // 将标签的横坐标用变量表示
                Form1.form1.pictureBox1.Location = new Point(x, 12);
                //  pictureBox1.Location = new Point(x, 12);
      
                //   Thread.Sleep(500);// 使线程休眠500毫秒
                x += 4;// 使横坐标每次增加4
                if (x >= 260)
                {
                    x = 12;// 当图标到达标签的最右边时,使其回到标签最左边
                }
            }
        }
    }
}

Form1.cs代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace XIANCHENG_CHUANGTI
{    
    
    public partial class Form1 : Form
    {
        public static Form1 form1;
        public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;//使线程可以调用窗体控件
            form1 = this;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
         //   Thread th = new Thread(new ThreadStart(Roll));//创建线程对象
          //  th.Start();//启动线程
        }

        private void button1_Click(object sender, EventArgs e)
        {
            drew text = new drew();
            text.Roll();
            
          //  Thread th = new Thread(new ThreadStart(text.Roll()));  //创建线程对象
         //  th.Start();//启动线程
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(c#,经验分享)