Вы можете установить Android: layout_weight = "0,4" и Android: layout_weight = "0,6"
Я столкнулся с этим прежде и обычно видел, что люди делают это:
/*SNIP*/
private bool isMassUpdate;
public void Check1_Check(object sender, EventArgs e)
{
if(!isMassUpdate)
{
do some stuff
}
}
/*SNIP*/
Можно также отсоединить и повторно прикрепить обработчики событий, однако, мне говорят, что это может быть источником утечек памяти.
Информация об утечках памяти и обработчиках событий: они непосредственно не связаны с присоединением и отсоединением, но мы видели в одном из наших приложений, что плохая ссылка обработчиков событий вниз деревья наследования может вызвать его.
Что я делаю в этих случаях вместо того, чтобы иметь булево значение, которое приостанавливает события, я использую счетчик. Когда количество будет> 0, затем приостановите события, когда количество = 0, затем возобновите события. Это помогает с проблемой, если у меня есть несколько вещей, которые могли бы запросить приостановку событий.
Другая полезная вещь состоит в том, если я должен приостановить события в блоке, я создаю немного класса помощника, который является IDisposable, который я могу использовать в блоке "использования" (в C#), таким образом, я не забываю постепенно уменьшать счетчик, после того как я вне объема.
От Вашего другого вопроса я собираюсь предположить, что Вы используете.NET VB. Так, RemoveHandler является Вашим лучшим выбором. Обычно у людей VB настраивает обработчики событий с помощью пункта Дескрипторов. Но можно также сделать это этот путь:
AddHandler chk1.CheckedChanged, AddressOf DoSomething
где DoSomething мог бы быть похожим на это:
Private Sub DoSomething(ByVal sender As Object, ByVal e As EventArgs)
' whatever
End Sub
AddHandler обеспечивает электричеством событие, таким образом, он будет стрелять. Чтобы заставить это не стрелять, используйте RemoveHandler:
RemoveHandler chk1.CheckedChanged, AddressOf DoSomething
Прежде, чем обновить свойство Checked Ваших дочерних флажков, назовите RemoveHandler на каждом из них; затем, когда Вы сделаны, назовите AddHandler для откладывания обработчиков событий. Если все Ваши флажки используют тот же обработчик, можно поместить их в набор и цикл через набор, чтобы добавить или удалить обработчики.
Вы могли также рассмотреть события 'щелчка' обработки для кнопок, а не измененный на проверку. Это могло бы быть ближе к Вашему намерению.
В моем приложении Visual Basic 6.0 я должен был обработать пользователей, дважды щелкающих по всему, таким образом, на всех моих обработчиках событий у меня есть одна строка, которая проверяет глобальную переменную
Private bSuspendEvents as Boolean
Private Sub Button1_Click()
On Error Goto ErrorHandler
If bSuspendEvents then Exit Sub
bSuspendEvents = True
'Do stuff
NormalExit:
bSuspendEvents = False
Exit Sub
ErrorHandler:
'Handle Error
Resume NormalExit
End Sub