2015-01-13 2 views
0

Я использую кнопку asp внутри пользовательского элемента управления, и этот пользовательский элемент управления находится в другом пользовательском элементе управления, я хочу изменить задний цвет кнопки asp из второго пользовательского элемента управления,Как изменить BackColor кнопки внутри UserControl с другого UserControl?

Я использовал приведенный ниже код, но цвет не меняется. Когда я меняю текст кнопки, используя btn.Text, это изменится, но когда я сменю btn.BackColor, это не сработает.

Dim btn As Button = DirectCast(ucontrolLetterSelect.FindControl(buttonID), System.Web.UI.WebControls.Button) 
btn.BackColor = System.Drawing.Color.Red 
+2

Не используйте 'FindControl', вы создаете скрытые зависимости между страницей, в UserControl а ребенок-UserControl. Скрыт, потому что идентификатор оценивается во время выполнения. Это не удастся, если кто-то изменит идентификатор или тип элемента управления в будущем. Вместо этого предоставляйте общедоступные свойства, которые могут быть установлены с контроллера (страница или родительский UserControl). Используйте значащее имя для свойства, например 'Public Property DeleteColor As Color'. Затем свойство изменяет цвет элемента управления. –

+0

, когда я меняю текст кнопки, используя btn.Text, это изменится, но когда я изменю btn.BackColor, это не сработает. – user3166407

+1

Я не знаю, что Web.UI.WebControls достаточно, чтобы дать ответ, но вы уверены, что BackColor работает «как есть» (вы пытались напрямую изменить обратную цветность?) В большинстве интерфейсов пользовательского интерфейса требуется установить кнопку «flat», чтобы разрешить вы можете напрямую изменить обратную сторону. Не знаю, возможно ли это в стандартных элементах управления ui без CSS. – Jcl

ответ

1

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

Exmaple:

У меня есть пользовательский элемент управления под названием TestControl1.ascx

Я поставил кнопку под названием btnTest на этом элементе управления пользователя

Я также создал общественную собственность под названием SetUserControlButtonBackColor в коде этого пользовательский контроль.

Public Property SetUserControlButtonBackColor As Color 
    Get 
     Return mColor 
    End Get 
    Set(value As Color) 
     Me.btnTest.BackColor = value 
    End Set 
End Property 

Я помещаю этот пользовательский элемент управления в моей веб-страницы и поставить кнопку на веб-странице под названием Button1

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

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.TestControl1.SetUserControlButtonBackColor = Drawing.Color.Aqua 
End Sub 

Теперь при нажатии на кнопку на веб-странице будет изменить цвет вашего пользовательского элемента управления