Как изменить цвет фона и шрифта для элементов ListBox?

1.Paste Следующий код в ваших файлах тем function.php.

2. Убедитесь, что плагин WP-REST-API должен быть установлен на сайте wordpress

add_action( 'rest_api_init', 'register_api_hooks' );

function register_api_hooks() {
  register_rest_route(
    'custom-plugin', '/login/',
    array(
      'methods'  => 'GET',
      'callback' => 'login',
    )
  );
}

function login($request){
    $creds = array();
    $creds['user_login'] = $request["username"];
    $creds['user_password'] =  $request["password"];
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );

    if ( is_wp_error($user) )
      echo $user->get_error_message();

    return $user;
}

add_action( 'after_setup_theme', 'custom_login' );

Затем ваш API будет создан как

http://www.url.com/wp-json/custom-plugin/login?username=xyz&password=xyz

Попробуйте его с помощью Postman. Вы получите 200 в качестве ответа и user info

0
задан Jimi 17 January 2019 в 15:24
поделиться

2 ответа

Проблема в вашем порядке if/else.

Установите это так:

if (selected)
{
    backgroundBrush = reportsBackgroundBrushSelected;
}
else
{
    if (text.Contains("Success"))
    {
        backgroundBrush = reportsBackgroundBrush1;
    }
    else if(text.Contains("Error"))
    {
        backgroundBrush = reportsBackgroundBrush2;
    }
    else
    {
        backgroundBrush = reportsBackgroundBrush3;            
    }
}
0
ответ дан Aleksa Ristic 17 January 2019 в 15:24
поделиться

Даже если явно не запрашивается, я предлагаю другой способ управления кистями, который, я думаю, может упростить переключатель ForeColor / BackColor и позволяет лучше настроить представление ListBox.

Создать объект класса, который содержит все выбранные / предварительно выбранные кисти и предоставляет общедоступные свойства для изменения этих значений, если / когда это необходимо.
Кроме того, этот класс предоставляет метод для возврата правильной комбинации кистей, выбирая правильные правильные на основе пары условий:

  • Текстовое содержимое текущего элемента
  • ]
  • Его выбор Статус (Selected/Focused или NotAccelerator/NotFocusedRect)

Класс довольно прост.
Он имеет перегруженный конструктор, который позволяет указывать значения по умолчанию или определенные атрибуты Color в соответствии со стандартным внешним видом элемента управления ListBox.

При использовании конструктора по умолчанию (пустого) для комбинации цветов ForeGround / BackGround по умолчанию установлено значение Color.Black и Color.White:

public ReportsBrushes() : this(Color.White, Color.Black) { }

, в противном случае он принимает 2 параметра, установить конкретные значения:

public ReportsBrushes(Color ItemBackColor, Color ItemForeColor)
{
    this.StandardForeground = new SolidBrush(ItemForeColor);
    this.StandardBackground = new SolidBrush(ItemBackColor);
}

Это упрощает метод ListBox.DrawItem:

private ReportsBrushes reportsBrushes = new ReportsBrushes();

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    ListBox ctl = sender as ListBox;
    e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
    e.DrawFocusRectangle();

    var itemColors = reportsBrushes.GetItemBrushes(ctl.Items[e.Index].ToString(), e.State.HasFlag(DrawItemState.Selected));

    using (StringFormat format = new StringFormat())
    {
        format.LineAlignment = StringAlignment.Center;
        e.Graphics.DrawString(ctl.Items[e.Index].ToString(), ctl.Font, itemColors.ForeColor, e.Bounds, format);
    }
}

private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
    e.ItemHeight = listBox1.Font.Height + 4;
}

Класс ReportsBrushes :

internal class ReportsBrushes
{
    public ReportsBrushes() : this(Color.White, Color.Black) { }
    public ReportsBrushes(Color ItemBackColor, Color ItemForeColor)
    {
        this.StandardForeground = new SolidBrush(ItemForeColor);
        this.StandardBackground = new SolidBrush(ItemBackColor);
    }
    public SolidBrush StandardForeground { get; set; }
    public SolidBrush StandardBackground { get; set; }

    public SolidBrush SelectedForeground { get ; set ; } = 
        new SolidBrush(Color.FromKnownColor(KnownColor.HighlightText));
    public SolidBrush SelectedBackground { get; set; } = 
        new SolidBrush(Color.FromKnownColor(KnownColor.Highlight));
    public SolidBrush SuccessBackground { get; set; } = 
        new SolidBrush(Color.LimeGreen);
    public SolidBrush ErrorBackground { get; set; } = 
        new SolidBrush(Color.OrangeRed);

    public (SolidBrush ForeColor, SolidBrush BackColor) GetItemBrushes(string ItemText, bool ItemSelected)
    {
        if (ItemSelected)
            return (this.SelectedForeground, this.SelectedBackground);
        else
        {
            if (ItemText.Contains("Success"))
                return (this.StandardForeground, this.SuccessBackground);
            if (ItemText.Contains("Error"))
                return (this.StandardForeground, this.ErrorBackground);
            return (this.StandardForeground, this.StandardBackground);
        }
    }
}
0
ответ дан Jimi 17 January 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: