web-dev-qa-db-ja.com

TextBoxコントロールを動的に生成する方法。

ボタンクリックの結果として、実行時にTextBoxコントロールを動的に生成するにはどうすればよいですか?ボタンをクリックするたびに、対応する動的ラベルとともにTextBoxコントロールを作成したいと思います。 C#言語を使用してASP.NET内でこれを実行したいと思います。

6
Innova
TextBox txt = new TextBox();
txt.ID = "textBox1";
txt.Text = "helloo";
form1.Controls.Add(txt);

Label lbl = new Label();
lbl.Text = "I am a label";
form1.Controls.Add(lbl);
14
rahul

以下のコードは、ドロップダウンリストで選択した値に従ってラベルとテキストボックスを印刷する方法を示しています。 2つのプレースホルダーは、2つの異なるテーブル区分に適切に配置できるように使用されます。

            int numlabels = System.Convert.ToInt32(ddlNumOfVolunteers.SelectedItem.Text);
            for (int i = 1; i <= numlabels; i++)
            {
                Label myLabel = new Label();
                TextBox txtbox = new TextBox();
                // Set the label's Text and ID properties.
                myLabel.ID = "LabelVol" + i.ToString();
                myLabel.Text = "Volunteer " + i.ToString();
                txtbox.ID = "TxtBoxVol" + i.ToString();
                PlaceHolder1.Controls.Add(myLabel);
                PlaceHolder2.Controls.Add(txtbox);
                // Add a spacer in the form of an HTML <br /> element.
                PlaceHolder2.Controls.Add(new LiteralControl("<br />"));
                PlaceHolder1.Controls.Add(new LiteralControl("<br />"));
0
Kiran G

すべてを整理するために、firstグリッドを作成し、必要な行と列の数を指定することをお勧めします。

MainWindow.xamlは次のようになります。

 <TabItem.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FFF0F0F0" Offset="1"/>
                    <GradientStop Color="#FF111111"/>
                    <GradientStop Color="#FF4F2B2B" Offset="0.946"/>
                </LinearGradientBrush>
            </TabItem.Background>

            <ScrollViewer HorizontalScrollBarVisibility="Visible" Margin="0,-1,0,2">

   <Grid Name="gridaxis"  x:FieldModifier="private" >
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />

                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                </Grid>


            </ScrollViewer>

        </TabItem>

次へ実行時に動的に作成される2行のテキストボックスを作成しようとしています。 1つは最初の行のテキストボックス用、もう1つは2番目の行用の、2つの異なるボタンを使用することで、目的のテキストボックスを生成できます。

 int i = 0;
    private void add_in_grid(object sender, RoutedEventArgs e)
    {
        i = i + 1;
        System.Windows.Controls.TextBox newDepo = new System.Windows.Controls.TextBox();

        newDepo.Name = "new_Depo_" + i;
        newDepo.Text = "neue Depo" + i;

        newDepo.Width = 200;
        newDepo.Height = 200;

        Grid.SetColumn(newDepo, i);
        Grid.SetRow(newDepo, 1);

        gridaxis.Children.Add(newDepo);
    }

    int k = 0;
    private void add_row_depo(object sender, RoutedEventArgs e)
    {
        k = k + 1;
        System.Windows.Controls.TextBox newRowDepo = new System.Windows.Controls.TextBox();
        newRowDepo.Name = "newRowDepo" + k;
        newRowDepo.Text = "row depo" + k;



        newRowDepo.Width = 200;
        newRowDepo.Height = 200;

        Grid.SetColumn(newRowDepo, k);
        Grid.SetRow(newRowDepo, 2);
        gridaxis.Children.Add(newRowDepo);
    }

私はそれが十分に明確であることを望みます。上記の2つの方法のそれぞれに1つのボタンを追加するだけです。ちょうどこのような:

 <Button x:Name="grid_textbox" Content="add using grid" Click="add_in_grid" HorizontalAlignment="Left" Margin="802,537,0,0" VerticalAlignment="Top" Width="197" Height="60"/>
    <Button x:Name="rowgrid" Content="add row" Click="add_row_depo" HorizontalAlignment="Left" Margin="617,537,0,0" VerticalAlignment="Top" Width="159" Height="65"/>
0
KevinAgastra21

要求どおりに複数のコントロールを追加するには、forループを使用します。

for (int i = 0; i < 2; ) {
    TextBox textBox = new TextBox();
    textBox.Text = "Hi";
    textBox.Name = "textBox" + i.ToString();
    form2.Controls.Add(textBox);
}

ただし、コントロール(テキストボックス)は重複しています。あなたは彼らの場所を整理する必要があります。

編集:例:

TextBox txt = new TextBox();
txt.Location = new Point(500, 100);
0
emremrah