Member 9983063 Ответов: 1

Я хочу показать название категории на панели


Привет, Ребята! я хочу показать название категории на панели, у меня есть код для скрытия, но я не знаю, как показать эту категорию.

Что я уже пробовал:

dbe = new Database1Entities();
            foreach (Control ctrl in flpCategories.Controls)
            {
                var btn = ctrl as Button;
                if (btn != null)
                {
                    int id = int.Parse(btn.Tag.ToString());
                    var cat = dbe.tblCategory.FirstOrDefault(x => x.categoryId == id);
                    if (cat != null)
                    {
                        if (!((cat.StartTime.Value.Year <= DateTime.Now.Year && cat.StartTime.Value.Month <= DateTime.Now.Month && cat.StartTime.Value.Day <= DateTime.Now.Day && cat.StartTime.Value.Hour <= DateTime.Now.Hour && cat.StartTime.Value.Minute <= DateTime.Now.Minute) && (cat.EndTime.HasValue && cat.EndTime.Value.Year >= DateTime.Now.Year && cat.EndTime.Value.Month >= DateTime.Now.Month && cat.EndTime.Value.Day >= DateTime.Now.Day && cat.EndTime.Value.Hour >= DateTime.Now.Hour && cat.EndTime.Value.Minute >= DateTime.Now.Minute)))
                        {
                            flpCategories.Controls.Remove(ctrl);
                        }
                    }
                }

[no name]

Что? У вас есть код для удаления панели, но вы не можете понять, как добавить панель?

Member 9983063

я не хочу добавлять панель, я просто хочу добавить категорию в панель, которая категория, Когда время начала <= datetime

ZurdoDev

Где ты застрял? Поместите текстовое поле, метку или какой-либо элемент управления, а затем поместите категорию в текстовое поле или метку. Простой.

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

F-ES Sitecore

Вместо того чтобы добавлять элемент управления категорией, вы должны всегда иметь эту категорию и заполнять ее соответствующим текстом, Если вам нужно ее показать, а если вам не нужно ее показывать, то установите ее видимость на скрытую или удалите ее так же, как вы удаляете кнопку.

1 Ответов

Рейтинг:
2

#realJSOP

Знаете, я бы, наверное, написал этот код вот так, потому что так легче читать оператор if. Он вызывает метод расширения, показанный в конце этого решения:

if (cat != null)
{
    DateTime start = (cat.StartTime.HasValue) ? cat.StartTime.Value.SetSeconds() : new DateTime(0);
    DateTime end = (cat.EndTime.HasValue) ? cat.EndTime.Value.SecSeconds() : new DateTime(0);
    DateTime now = DateTime.Now;

    bool inRange = (start <= now && end >= now);
    if (!(start <= now && end >= now))
    {
        flpCategories.Controls.Remove(ctrl);
    }
}


Что касается показа элемента управления, когда inRange это правда, просто установите видимый флаг для элемента управления. Поскольку вы не указали фреймворк (WinForms, WPF, ASP.Net), я предоставлю вам найти подходящий способ сделать это.

Если вам интересно, я написал Совет/трюк, который позволяет сравнить нужные части двух DateTime объекты:

Частичное Равенство Объектов DateTime[^]

И кстати, вот удобный метод расширения для установки секунд из даты-времени. вызов его без параметров автоматически вернет значение даты с секундами и миллисекундами в 0.

public static DateTime SetSeconds(this DateTime date, double secs=0, double millisecs=0)
{
    return new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, secs, millisecs, date.Kind);
}


Member 9983063

сэр спасибо за ваш ответ, но я хочу знать этот код для скрытия категорий, но я хочу показать категории, как это сделать?