به نظرم ، از کتابخانه ZXing برای خواندن QR استفاده کنید.در کد زیر یک شیء از نوع BarcodeReader ایجاد شده و تنظیمات دیکودر QR تنظیم می‌شه . سپس یک فرم جدید ایجاد می‌شه و یک تکست باکس برای نمایش شناسه صیاد اضافه می‌شه. رویداد فشردن کلید در تکست باکس بررسی می‌کنه که آیا کلید Enter فشرده شده یا نه، و در صورت فشرده شدن، شناسه صیاد را از رشته QR استخراج و در تکست باکس نمایش می‌ده. رویداد خواندن QR از اسکنر نیز شناسه صیاد را استخراج و در تکست باکس نمایش می‌ده. برنامه در پس زمینه اجرا می‌شه و منتظر خواندن QR از اسکنر هست. این هم مثالش



using System;
using System.Windows.Forms;
using ZXing;


class Program
{
static void Main(string[] args)
{
// ایجاد یک شیء از نوع BarcodeReader
var barcodeReader = new BarcodeReader();


// تنظیم تنظیمات دیکودر QR
barcodeReader.Options = new ZXing.Common.DecodingOptions
{
PossibleFormats = new[] { BarcodeFormat.QR_CODE },
};


// ایجاد یک فرم جدید
var form = new Form();


// ایجاد یک تکست باکس برای نمایش شناسه صیاد
var textBox = new TextBox();
form.Controls.Add(textBox);


// رویداد فشردن کلید در تکست باکس
textBox.KeyDown += (sender, e) =>
{
if (e.KeyCode == Keys.Enter)
{
// استخراج شناسه صیاد از رشته QR
string qrString = textBox.Text;
string hunterID = qrString.Substring(qrString.Length - 16);


// نمایش شناسه صیاد در تکست باکس
textBox.Text = hunterID;
}
};


// رویداد خواندن QR از اسکنر
barcodeReader.OnBarcodeScanned += (result) =>
{
// استخراج شناسه صیاد از رشته QR
string qrString = result.Text;
string hunterID = qrString.Substring(qrString.Length - 16);


// نمایش شناسه صیاد در تکست باکس
textBox.Invoke((MethodInvoker)(() => textBox.Text = hunterID));
};


// اجرای برنامه در پس زمینه
Application.Run(form);
}




امیدوارم منظورتان رو درست متوجه شده باشم و این مطلب مفید واقع بشه