繁体   English   中英

我有一个用 C# 编写的 Qr 生成器应用程序。 所以现在我想生成在运行时每 10 秒改变一次的 Qr 代码

[英]I have a Qr generator application written in C#. So now i want to generate Qr Code that willl change in every 10 seconds during runtime

我想生成动态二维码,所以请帮助我如何构建一个动态二维码生成器,该生成器将在运行期间每 10 秒更改一次

    private void btnGenerate_Click(object sender, EventArgs e)
    {
        QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator();
        DateTime now = DateTime.Now;
        dateTimePickerDate.Text = now.ToLongDateString();
        txtTime.Text = now.ToShortTimeString();

        var qrText = cmbSubject.Text + "\n" + txtSection.Text + "\n" + dateTimePickerDate.Text + "\n" + txtTime.Text + "\n";
        var MyData = QRGenerator.CreateQrCode(cmbSubject.Text + ",\n" + txtSection.Text + ", \n" + dateTimePickerDate.Text + ",\n" + txtTime.Text + ",\n" + txtIP.Text + ",\n", QRCoder.QRCodeGenerator.ECCLevel.H);
        var code = new QRCoder.QRCode(MyData);
        pcQRImage.Image = code.GetGraphic(50);

    }

您需要在 Forms 项目中添加一个Timer ,例如:

private Timer timerInterval = new Timer();
private QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator();

private void btnGenerate_Click(object sender, EventArgs e)
{
    timerInterval.Enabled = true;
    timerInterval.Tick += timerInterval_Tick;
    timerInterval.Interval = 10000;
    timerInterval.Start();
}

private void timerInterval_Tick(object sender, EventArgs e)
{
    DateTime now = DateTime.Now;
    dateTimePickerDate.Text = now.ToLongDateString();
    txtTime.Text = now.ToShortTimeString();

    var qrText = cmbSubject.Text + "\n" + txtSection.Text + "\n" + dateTimePickerDate.Text + "\n" + txtTime.Text + "\n";
    var MyData = QRGenerator.CreateQrCode(cmbSubject.Text + ",\n" + txtSection.Text + ", \n" + dateTimePickerDate.Text + ",\n" + txtTime.Text + ",\n" + txtIP.Text + ",\n", QRCoder.QRCodeGenerator.ECCLevel.H);
    var code = new QRCoder.QRCode(MyData);
    pcQRImage.Image = code.GetGraphic(50);
}

也可以使用System.Threading.Timer但随后有必要Invoke您的Form元素。

嗨,您可以尝试这种方法,这将实例化计时器以触发您设置的每毫秒间隔。

   private void Form1_Load(object sender, EventArgs e)
    {
            System.Timers.Timer timerInterval = new System.Timers.Timer();
            timerInterval.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            timerInterval.Interval = 10000;
            timerInterval.Enabled = true;
        
           
    }
    
     private static void OnTimedEvent(object source, ElapsedEventArgs e)
     {
        QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator();
        DateTime now = DateTime.Now;
        dateTimePickerDate.Text = now.ToLongDateString();
        txtTime.Text = now.ToShortTimeString();
    
        var qrText = cmbSubject.Text + "\n" + txtSection.Text + "\n" + dateTimePickerDate.Text + "\n" + txtTime.Text + "\n";
        var MyData = QRGenerator.CreateQrCode(cmbSubject.Text + ",\n" + txtSection.Text + ", \n" + dateTimePickerDate.Text + ",\n" + txtTime.Text + ",\n" + txtIP.Text + ",\n", QRCoder.QRCodeGenerator.ECCLevel.H);
        var code = new QRCoder.QRCode(MyData);
        if(pcQRImage!=null)
        {
            pcQRImage.Dispose();
            pcQRImage.Image = code.GetGraphic(50);
        }
        else
        {
             pcQRImage.Image = code.GetGraphic(50);
        }
    
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM