You could probably try this,
GraphPane pane;
public Form1()
{
InitializeComponent();
pane = zedGraphControl1.GraphPane;
}
private void button_AddTxtObj_Click(object sender, EventArgs e)
{
TextObj textEquation = new TextObj("Add your Text", pane.XAxis.Scale.Min+ (3*(pane.XAxis.Scale.MinorStep)), pane.YAxis.Scale.Max-pane.YAxis.Scale.MinorStep);
pane.GraphObjList.Add(textEquation);
zedGraphControl1.Refresh();
}
private void button_ClearTxtObj_Click(object sender, EventArgs e)
{
pane.GraphObjList.Clear();
zedGraphControl1.Refresh();
}

when you zoom in or zoom out, the text object remains same , so you need to add zoom event to update the text object location, 1) clear the textobject 2) use the above approach to find the x&y positions 3) redraw text object:
private void zedGraphControl1_ZoomEvent(ZedGraphControl sender, ZoomState oldState, ZoomState newState)
{
// 1) clear the textobject
// 2) use the above approach to find the x&y positions
// 3) redraw the text object
}
Hope it helps...:)