Step 1: Click New Project, then select Visual C# on the left, then Windows and then select Windows Forms Application. Name your project "TelephoneDiary" and then click OK
Step 2: Right click on your project select Manage NuGet Packages -> Search MaterialSkin -> Install
Step 3: Design your form as below

Create a local database, then add phonebook table to your dataset

Add a bindingsource to your windows form application

Step 4: Add code to handle your winform as below
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 MaterialSkin;
namespace TelephoneDiary
{
public partial class Form1 : MaterialSkin.Controls.MaterialForm
{
public Form1()
{
InitializeComponent();
//Init material skin
var skinManager = MaterialSkinManager.Instance;
skinManager.AddFormToManage(this);
skinManager.Theme = MaterialSkinManager.Themes.DARK;
skinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'appData.PhoneBooks' table. You can move, or remove it, as needed.
this.phoneBooksTableAdapter.Fill(this.appData.PhoneBooks);
Edit(false);
}
private void Edit(bool value)
{
txtPhoneNumber.Enabled = value;
txtFullName.Enabled = value;
txtEmail.Enabled = value;
txtAddress.Enabled = value;
}
private void btnNew_Click(object sender, EventArgs e)
{
try
{
//Add a new object to binding source
Edit(true);
appData.PhoneBooks.AddPhoneBooksRow(appData.PhoneBooks.NewPhoneBooksRow());
phoneBooksBindingSource.MoveLast();
txtPhoneNumber.Focus();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
appData.PhoneBooks.RejectChanges();
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
Edit(true);
txtPhoneNumber.Focus();
}
private void btnCancel_Click(object sender, EventArgs e)
{
Edit(false);
phoneBooksBindingSource.ResetBindings(false);
}
private void btnSave_Click(object sender, EventArgs e)
{
try
{
//Update data to sql database
Edit(false);
phoneBooksBindingSource.EndEdit();
phoneBooksTableAdapter.Update(appData.PhoneBooks);
dataGridView.Refresh();
txtPhoneNumber.Focus();
MessageBox.Show("Your data has been successfully saved.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
appData.PhoneBooks.RejectChanges();
}
}
private void txtSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//Filter data
if (!string.IsNullOrEmpty(txtSearch.Text))
phoneBooksBindingSource.Filter = string.Format("PhoneNumber = '{0}' OR FullName LIKE '*{1}*' OR Email = '{2}' OR Address LIKE '*{3}*'", txtPhoneNumber.Text, txtFullName.Text, txtEmail.Text, txtAddress.Text);
else
phoneBooksBindingSource.Filter = string.Empty;
}
}
private void dataGridView_KeyDown(object sender, KeyEventArgs e)
{
//Delete data from sql database
if(e.KeyCode==Keys.Delete)
{
if (MessageBox.Show("Are you sure want to delete this record?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
phoneBooksBindingSource.RemoveCurrent();
}
}
}
}
VIDEO TUTORIALS