Полагаю, поскольку вы используете GridView, это ASP.NET, а не WinForms. Я думаю, что то, что вы действительно ищете, может быть сделано непосредственно на вашей странице или с помощью пользовательского UserControl, а не интерфейса. Термин «Интерфейс» в C # имеет конкретное значение и немного отличается:
http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx
Предполагая, что вы просто продолжаете делать это на странице, вам нужно добавить обработчик событий для вашего события TextChanged для текстового поля NumberOfParents и некоторый простой код в вашем коде, чтобы добавить строки и связать ваше представление сетки. На вашей странице ASPX, что-то вроде этого:
Number Of Parents: <asp:TextBox runat="server" ID="txtNumberOfParents" AutoPostBack="true" OnTextChanged="txtNumberOfParents_TextChanged" /><br />
<br />
<asp:GridView runat="server" ID="gvNumberOfChildren" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="No. of Parents">
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="No. of Children">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtNumberOfChildren" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
А в вашем коде что-то вроде этого:
protected void txtNumberOfParents_TextChanged(object sender, EventArgs e)
{
int numParents = 0;
int[] bindingSource = null;
Int32.TryParse(txtNumberOfParents.Text, out numParents);
if (numParents > 0)
{
bindingSource = new int[numParents];
}
gvNumberOfChildren.DataSource = bindingSource;
gvNumberOfChildren.DataBind();
}
Вид сетки (или любой другой элемент управления, связанный с данными) может быть привязан практически к любому массиву или IEnumerable, что означает, что вы можете использовать List (t), Dictionary, массив и т. Д.
Надеюсь, это поможет.