c # Динамическое управление текстовым полем с CheckBox и списком - PullRequest
0 голосов
/ 06 октября 2011

Вчера я задал похожий вопрос, и люди сказали мне использовать List и контроллер. Я изменил свой код, соответственно, теперь добавил класс MyContols и список, чтобы лучше контролировать мои элементы.

Это мой класс, который содержит мои флажки и текстовые поля:

    private List<MyControls> _myControls = new List<MyControls>();

    class MyControls
      {
    int x=5;
    int y=30; 
    public CheckBox cb = new CheckBox();
    public TextBox tb1 = new TextBox();

    public TextBox tbSpecs = new TextBox();
    public TextBox tb3 = new TextBox();
    public TextBox tb4 = new TextBox();



    public void initElements(String name)
    {
        cb.Width = 10;
        cb.Height = 10;
        cb.Name = "cb_" + name;
        cb.Location = new Point(x, y+5);
        Form.ActiveForm.Controls.Add(cb);
        x += 15;

        tb1.Width = 50;
        tb1.Height = 20;
        tb1.Location = new Point(x, y);
        tb1.Name = "tb1_" + name;
        Form.ActiveForm.Controls.Add(tb1);
        x += 60;

        tbSpecs.Width = 150;
        tbSpecs.Height = 20;
        tbSpecs.Name = "tb2_" + name;
        tbSpecs.Location = new Point(x, y);
        Form.ActiveForm.Controls.Add(tbSpecs);
        x += 160;

        tb3.Width = 40;
        tb3.Height = 20;
        tb3.Name = "tb3_" + name;
        tb3.Location = new Point(x, y);
        Form.ActiveForm.Controls.Add(tb3);
        x += 50; 

        tb4.Width = 450;
        tb4.Height = 20;
        tb4.Name = "tb4_" + name;
        tb4.Location = new Point(x, y);
        Form.ActiveForm.Controls.Add(tb4);

        x = 0;
    }

    public int SetX(int i)
    {
        x = i;
        return x;
    }

    public int SetY(int Y)
    {
        y = Y;
        return y;
    }

}

также у меня есть класс ProductForm, второй в моем приложении, который позволяет мне просматривать данные в текстовых полях, редактировать и удалять эти данные.

Моя проблема в том, как я могу удалить строку?

Мой второй вопрос: нужно ли для каждой строки создавать новый экземпляр класса MyControl? Наверное, мои вопросы очень просты. Извините, что нашли время, ребята!

Эта функция предназначена только для тестирования, потому что я все еще пытаюсь добавить и удалить свои строки.

        public void CreateFormElements()
        {
        ProductForm form2 = new ProductForm();
        form2.Visible = true;
        form2.Activate();

        MyControls mc = new MyControls();

        _myControls.Add(mc);
        _myControls[0].initElements("1");
        mc = new MyControls();
        _myControls.Add(mc);

        mc.SetY(55);
        _myControls[1].initElements("2");



    }

Как удалить всю строку, если установлен соответствующий флажок?

Можете ли вы сказать мне код, который может сделать это?

1 Ответ

1 голос
/ 06 октября 2011

В вашем Init добавьте обработчик для события cb.Checked, а затем удалите строку.

В Инициативе:

 cb.CheckedChanged += cb_CheckedChanged;

Обработчик - не уверен в точной реализации в вашем случае, но вот примерный код:

private void cb_CheckedChanged(Object sender, EventArgs e) {
   string NameSet  = (sender as CheckBox).Name.Split(new char[]{'_'})[1];
   Form.ActiveForm.Controls.Remove("ch_" + NameSet);
   Form.ActiveForm.Controls.Remove("tb1_" + NameSet);
   Form.ActiveForm.Controls.Remove("tb2_" + NameSet);
   Form.ActiveForm.Controls.Remove("tb3_" + NameSet);
   Form.ActiveForm.Controls.Remove("tb4_" + NameSet);


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...