- 23.08.2025
- Post by: e-soft
- Post by: Комментариев нет
Сегодня мы создадим простую программу на C# Windows Forms, которая позволяет генерировать QR-код с контактной информацией и сохранять его в телефон сразу в формате vCard. Такой QR-код при сканировании смартфоном открывается как визитка и сразу предлагает добавить контакт в адресную книгу.
Что будет уметь программа
Вводить данные контакта через текстовые поля:
Имя
Фамилия
Должность
Организация
Два телефонных номера
Электронная почта
Генерировать QR-код в формате vCard 3.0
Отображать QR-код на форме в PictureBox
Сохранять QR-код в формате JPEG
Используемые технологии
C# WinForms
Библиотека QRCoder (добавляется через NuGet)
Основной код программы
Пример кода для формы с двумя кнопками (Сгенерировать и Сохранить) и одним PictureBox:
using System;
using System.Drawing;
using System.Windows.Forms;
using QRCoder; // NuGet: QRCoder
namespace QRContactGenerator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnGenerate_Click(object sender, EventArgs e)
{
string firstName = txtFirstName.Text.Trim();
string lastName = txtLastName.Text.Trim();
string jobTitle = txtJobTitle.Text.Trim();
string organization = txtOrganization.Text.Trim();
string phone1 = txtPhone1.Text.Trim();
string phone2 = txtPhone2.Text.Trim();
string email = txtEmail.Text.Trim();
if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(phone1))
{
MessageBox.Show("Введите Имя, Фамилию и хотя бы один Телефон!",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Формируем vCard 3.0
string vCard =
"BEGIN:VCARD\n" +
"VERSION:3.0\n" +
$"N:{lastName};{firstName};;;\n" +
$"FN:{firstName} {lastName}\n";
if (!string.IsNullOrEmpty(organization))
vCard += $"ORG:{organization}\n";
if (!string.IsNullOrEmpty(jobTitle))
vCard += $"TITLE:{jobTitle}\n";
vCard += $"TEL;CELL:{phone1}\n";
if (!string.IsNullOrEmpty(phone2))
vCard += $"TEL;CELL:{phone2}\n";
if (!string.IsNullOrEmpty(email))
vCard += $"EMAIL:{email}\n";
vCard += "END:VCARD";
// Генерация QR
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(vCard, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrImage = qrCode.GetGraphic(20);
pictureBox1.Image = qrImage;
}
private void btnSave_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
MessageBox.Show("Сначала сгенерируйте QR-код!", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
SaveFileDialog sfd = new SaveFileDialog
{
Filter = "JPEG Image|*.jpg",
Title = "Сохранить QR-код"
};
if (sfd.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
MessageBox.Show("QR-код успешно сохранён!", "Готово",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
Как это работает
Пользователь вводит данные контакта (имя, фамилию, должность, телефоны, email, организацию).
По нажатию кнопки Сгенерировать программа формирует строку в формате vCard 3.0.
Библиотека QRCoder создаёт QR-код, который отображается в PictureBox.
Кнопка Сохранить позволяет экспортировать QR-код в формате JPEG для дальнейшего использования.
📱 Теперь при сканировании такого QR-кода смартфон сразу предложит сохранить контакт в телефонную книгу с заполненными полями.