Как получить доступ к свойствам usercontrol в C#

Я использую указанную технику для регистрации всех запросов и ответов. Говоря коротко, лучший способ сделать это - использовать Handlers.

Сначала создайте обработчик:

public class CustomHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //get route values and process them
        var routeValues = (IHttpRouteData[]) HttpContext.Current.Request.RequestContext.RouteData.Values["MS_SubRoutes"];

        //let other handlers process the request
        return await base.SendAsync(request, cancellationToken)
            .ContinueWith(task =>
            {
                //once response is ready, do something with it                                        

                return task.Result;
            }, cancellationToken);
    }
}

Затем зарегистрируйте его в WebApiConfig:

config.MessageHandlers.Add(new CustomHandler());
20
задан Pedro Luz 4 January 2009 в 17:23
поделиться

5 ответов

Самый чистый путь состоит в том, чтобы выставить желаемые свойства как свойства Вашего usercontrol, например:

class MyUserControl
{
  // expose the Text of the richtext control (read-only)
  public string TextOfRichTextBox
  {
    get { return richTextBox.Text; }
  }
  // expose the Checked Property of a checkbox (read/write)
  public bool CheckBoxProperty
  {
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; }
  }


  //...
}

Таким образом можно управлять, какие свойства Вы хотите выставить и должны ли они быть чтением-записью или только для чтения. (конечно, необходимо использовать лучшие названия свойств, в зависимости от их значения).

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

32
ответ дан 29 November 2019 в 23:53
поделиться

Измените модификатор доступа ("Модификаторы") RichTextBox в сетке свойства Общественности.

3
ответ дан 29 November 2019 в 23:53
поделиться

Добавьте свойство к usercontrol как это

public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}
3
ответ дан 29 November 2019 в 23:53
поделиться

Необходимо сделать общественную собственность для richtextbox или выставить некоторое другое свойство, которое делает задание установки richtextbox текста как:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
0
ответ дан 29 November 2019 в 23:53
поделиться

Недавно у меня возникли некоторые проблемы при выполнении этого с помощью настраиваемого класса :

Пользовательский элемент управления имел общедоступное свойство, которое относилось к типу настраиваемого класса. Дизайнер по умолчанию пытается присвоить ему какое-то значение, поэтому в коде конструктора строка userControlThing.CustomClassProperty = null добавлялся автоматически.

Намерение состояло в том, чтобы иметь возможность предоставить пользовательскому элементу управления настраиваемый класс в любой момент во время выполнения программы (для изменения значений, видимых пользователю). Поскольку устанавливает {} не проверяла нулевые значения, возникали различные ошибки.

Решением было изменить свойство на частное и использовать два общедоступных метода для установки и получения значения. Разработчик попытается автоматически назначить свойства, но оставляет методы в покое.

2
ответ дан 29 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

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