Могу ли я использовать свойство Tag для хранения его имени? - PullRequest
0 голосов
/ 11 сентября 2018

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

текст сообщения Please enter Имя

, где Имя - метка для текстового поля, поэтому я использовал Textbox.Tag, чтобы сохранить имя textbox для его достижения, поскольку между Textbox и * 1015 нет связи *

Я искал и обнаружил, что могу использовать свойство Tag для хранения чего угодно, но я хочу быть уверенным в том, что оно будет использовано в сообщении, которое я вам говорил о

Есть ли с этим проблемы?

    public int ValidateData()
    {
        foreach (Control cont in GB_PatientInfo.Controls)
        {
            if (cont is TextBox)
            {
                if (string.IsNullOrWhiteSpace(cont.Text.Trim()))
                {
                    MessageBox.Show("enter data " + cont.Tag, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
                    cont.BackColor = Color.Red;
                    cont.Focus();
                    return -1;
                }
            }
        }
        return 1;
    }

Спасибо

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Использование свойства Tag не влияет на ваше приложение.Вы можете хранить там все, что хотите, без проблем.

0 голосов
/ 11 сентября 2018

Как уже упоминалось в других ответах, можно использовать свойство Tag для хранения любой дополнительной информации об элементе управления, включая отображаемое имя.

Но вы когда-нибудь замечали, как ToolTip позволяет вам установить ToolTip для вашего управления во время разработки?

A ToolTip, ErrorProvider или HelpProvider являются примерами компонентов поставщика расширений. Они добавляют некоторые свойства к элементам управления во время разработки. Вы также можете создать такой компонент для DisplayName, реализовав IExtenderProvider.

Пример

Следующий код показывает, как легко вы можете создать компонент с именем DisplayNameExtender. Когда вы удаляете экземпляр этого компонента на форме, тогда новое свойство будет добавлено во время разработки элементов управления, вы можете установить значение для свойства во время разработки: DisplayName для diaplayNameExtender1 .

Затем во время выполнения, когда вы хотите получить значение DisplayName для элемента управления, достаточно найти его следующим образом:

var displayName = displayNameExtender1.GetDisplayName(control);

Вот код для DisplayNameExtender компонента:

using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
[ProvideProperty("DisplayName", typeof(Control))]
public class DisplayNameExtender : Component, IExtenderProvider
{
    private Hashtable displayNameValues = new Hashtable();
    public bool CanExtend(object extendee)
    {
        return (extendee is Control && !(extendee is Form));
    }
    public string GetDisplayName(Control control)
    {
        if (displayNameValues.ContainsKey(control))
            return (string)displayNameValues[control];
        return null;
    }
    public void SetDisplayName(Control control, string value)
    {
        if (string.IsNullOrEmpty(value))
            displayNameValues.Remove(control);
        else
            displayNameValues[control] = value;
    }
}
0 голосов
/ 11 сентября 2018

Как вы уже читали, вы можете хранить любой тип, который является производным от объекта (то есть все) в свойстве Control.Tag, так что сохранение имени метки в порядке.

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