Как сделать класс, чтобы скрыть ваши элементы управления в вашей форме в С#

У меня есть кнопка с именем btnBeverage, 3 numericupdown, 3 поля со списком и 3 текстовых поля. Теперь я сделал класс, чтобы сделать элементы управления видимыми или нет. например, если я нажму btnBeverage, 3 numericupdown, 3 поля со списком и 3 текстовых поля должны быть показаны/скрыты. Но когда я помещаю свои коды в класс, например, numericupdown.Show(), он не распознает никакого контроля из моей формы. как мне его подключить?

УЧЕБНЫЙ КЛАСС :

    public void visibile()
    {
         numericupdown.Show(); //this has error because it does not recognize any numericupdown control.
    }

person Lyndon Broz Cañete Tonelete    schedule 18.08.2013    source источник


Ответы (2)


Вы создаете целый класс только для того, чтобы показать/скрыть некоторые элементы управления? Вместо этого вы можете использовать эти методы:

    public static void ShowControl(Control c)
    {
        c.Show();
    }

    public static void HideControl(Control c)
    {
        c.Hide();
    }

Или, если вы хотите поместить его в совершенно новый класс (что я не рекомендую)

public static class ControlsUtility
{
    public static void ShowControl(Control c)
    {
        c.Show();
    }

    public static void HideControl(Control c)
    {
        c.Hide();
    }
}

Надеюсь, это помогло.

person Rohan    schedule 18.08.2013
comment
смогут ли эти коды скрыть/показать какой-либо элемент управления из моей формы? Может ли он скрыть/показать много элементов управления? просто поставив c.show/Hide()? - person Lyndon Broz Cañete Tonelete; 18.08.2013
comment
@Lyndon Broz Canete Tonelete, да. Поскольку элемент управления winforms по умолчанию получен из класса «Контроль», вы сможете скрыть/показать любой объект, производный от «Контроля». - person Rohan; 18.08.2013

Почему бы просто не сделать это на стороне клиента с помощью jQuery? Из вашего примера видно, что на стороне сервера нет причин делать это. Выполнение этого на стороне клиента позволяет вам динамически управлять и не требует отправки обратно на сервер только для отображения или скрытия элементов управления. Вы даже можете легко получить некоторые приятные эффекты. Вы можете просто изменить класс, который вы прикрепляете ко всем элементам управления. Я собрал образец, который, я думаю, довольно понятен ниже. Он позволяет отображать и скрывать любой элемент, который вы помечаете классом «напиток», с помощью короткой и простой функции.
http://jsfiddle.net/dMJds/3/

и вот код:

<script>
    function hideBeverages() {
        $('.beverage').fadeOut(2000);
    };

    function showBeverages() {
        $('.beverage').fadeIn(2000);
    };
</script>

<form>
    <button id="hideBevs" type="button" onclick="hideBeverages()">Hide Beverages</button>
    <button id="showBevs" type="button" onclick="showBeverages()">Show Beverages</button>

    <hr />
    <div class="beverage">
        <h4>Beverage Order</h4>
        <input id="qtyMilk" type="text" /><label for="qtyMilk">Milk</label><br />
        <input id="qtyCoffee" type="text" /><label for="qtyMilk">Coffee</label>
    </div>

    <div>
        <h4>Foods</h4>
        <ul>
            <li class="beverage">Tea</li>
            <li class="produce">Apples</li>
            <li class="beverage">Water</li>
            <li class="produce">Oranges</li>
        </ul>
    </div>
</form>
person RobM    schedule 18.08.2013