Your "ChkBox1" is probably
<input type="checkbox" runat="server"/>
which gets converted to HtmlInputCheckBox. The alternative is
<asp:Checkbox runat="server"/>
which gets converted to Checkbox. If you want to keep your markup as it is you need to use the HtmlInputCheckBox in your code-behind, not Checkbox
HtmlInputCheckBox cb = (HtmlInputCheckBox)i.FindControl("ChkBox1");
if (cb != null && cb.Checked)
To use this you need
using System.Web.UI.HtmlControls;
at the top of your page.