First off, Do not concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
The chances are that fixing that will get rid of your problem anyway!
string sql = "UPDATE Client_Payment_TB SET Pay_Mode=@PM, Cheque_DD_No=@CDN, Bank=@BK, Cheque_Date=@CDAT, Current_Date=@NOW, Discount_Amount=@DA, Paid=@PD, Remaining=@RM WHERE Bill_ID=@ID";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.AddWithValue("@PM", Pay_Modes);
cmd.AddWithValue("@CDN", txt_Chaque_No.Text);
cmd.AddWithValue("@BK", txt_Bank.Text);
cmd.AddWithValue("@CDAT", dateTimePicker_Chaque.Value);
cmd.AddWithValue("@NOW", dateTimePicker_Current_date.Value);
cmd.AddWithValue("@DA", txt_Discount.Text);
cmd.AddWithValue("@PD", dpp);
cmd.AddWithValue("@RM", txt_Remaining.Text);
cmd.AddWithValue("@ID", txt_Bill_No.Text);
...
}