Страницы

Поиск по вопросам

Показаны сообщения с ярлыком click. Показать все сообщения
Показаны сообщения с ярлыком click. Показать все сообщения

четверг, 9 января 2020 г.

Как определить на какую кнопку нажал пользователь

#android #c_sharp #button #xamarin #click


Итак, есть 5 кнопок на экране, нужно определить на какую кнопку нажал пользователь
и взять её тег после чего редирект на другое активити. Пытался сделать это так:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    SetTheme(Android.Resource.Style.ThemeDeviceDefaultLightNoActionBar);
    SetContentView(Resource.Layout.MainScreen);

    Button BtnHm = (Button)FindViewById(Resource.Id.Home);
    BtnHm.Click += SwitchActivity;

    Button BtnSrch = (Button)FindViewById(Resource.Id.Search);
    BtnSrch.Click += SwitchActivity;

    Button BtnLstOfPh = (Button)FindViewById(Resource.Id.ListOfPhotos);
    BtnLstOfPh.Click += SwitchActivity;

    Button BtnGlr = (Button)FindViewById(Resource.Id.Glory);
    BtnGlr.Click += SwitchActivity;

    Button BtnMyAcc = (Button)FindViewById(Resource.Id.MyAcc);
    BtnMyAcc.Click += SwitchActivity;
}

public void SwitchActivity(object sender, EventArgs e)
{
    Button sendBtn = (Button)sender;

    switch (sendBtn.Tag)
    {
        case 1:
            Intent toMain = new Intent(this, typeof(MainScreenActivity));
            StartActivity(toMain);
            break;
        case 2:
            Intent toSearch = new Intent(this, typeof(SearchActivity));
            StartActivity(toSearch);
            break;
        case 3:
            Intent toPhoto = new Intent(this, typeof(ListOfPhotoActivity));
            StartActivity(toPhoto);
            break;
        case 4:
            Intent toGlory = new Intent(this, typeof(GloryActivity));
            StartActivity(toGlory);
            break;
        case 5:
            Intent toUser = new Intent(this, typeof(UserActivity));
            StartActivity(toUser);
            break;
    }
}


Но мне подчеркивает в case цифры и пишет что требуется постоянное значение. Как исправить?


    


Ответы

Ответ 1



Чтобы вы ни писали в xml, в свойство Tag любое значение будет паковаться (Tag - всё же object). При запросе свойства вы будете всегда получать object, поэтому нужно провести распаковку: switch ((int) sendBtn.Tag)

Ответ 2



Тебе нужно присвоить каждой кнопке Id и в конструкции switch() искать view-элемент по id пример: switch(sendBtn.getId()){ case R.id.btn1: ... case R.id.btn2: ...} Если это не подходит для Вашего языка программирования, я надеюсь, что мой ответ подскажет вам путь решения данной проблемы. Всего хорошего)

Ответ 3



XAML `

понедельник, 30 декабря 2019 г.

Игнорируется часть кликов

#c_sharp #счетчики #click


На днях понадобилось написать программу, которая считает количество кликов, совершенных
человеком. Однако заметил, что отлавливается не каждый клик: если человек совершает
хотя бы 2-3 щелчка в секунду, часть точно будет проигнорирована. Как с таким бороться?
Отлавливаю с помощью элементарной

private void opg_Click(object sender, EventArgs e)
{
    count++;
}

    


Ответы

Ответ 1



Скорее всего, когда пользователь делает 2-3 клика в секунду, то это воспринимается системой как двойной клик (отдельное от обычного клика событие). Попробуйте добавить: private void opg_DoubleClick(object sender, EventArgs e) { count = count + 1; } Также разницу поясняет справка от мелкомягких.

Ответ 2



Можно проще. Подпишитесь на событие MouseUp (или MouseDown).

Ответ 3



Нужно запретить обработку двойных кликов. Это можно сделать убрав соответствующий флаг из класса при создании формы: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private int clicks = 0; protected override CreateParams CreateParams { get { const int CS_DBLCLKS = 0x8; CreateParams cp = base.CreateParams; cp.ClassStyle &= ~CS_DBLCLKS; return cp; } } private void Form1_Click(object sender, EventArgs e) { this.Text = (++clicks).ToString(); } }

пятница, 20 декабря 2019 г.

Как не писать код для каждой из 36 кнопок в WPF в C#?

#c_sharp #wpf #button #click


В WPF присутствует 36 кнопок, при нажатии на каждую, должна изменятся переменная
и выводится сообщение.
Есть ли способ не писать по 36 раз в мейне:

public void button_Click1(object sender, RoutedEventArgs e)
    {
        amount += 100;
        System.Windows.MessageBox.Show("Message");
    }


И при такой возможности, можно ли будет дать каждой кнопке свое сообщение?

Дополнено: 

Я немного не понял. Можно расжевать?
Будет как то так?


Ответы

Ответ 1



Кто вам мешает вешать обработчик на один и тот же метод?

суббота, 14 декабря 2019 г.

Отличие работы кода в Mozilla и Chrome

#button #mozilla #click


Есть код

    


При клике на кнопке на слово Button в Chrome выдаёт I, а Mozilla  - BUTTON. Почему
так и как сделать так, чтобы и в Mozilla выдаrвался самый глубокий элемент
    


Ответы

Ответ 1



Похоже, Firefox следует рекомендациям W3C: Content model: Phrasing content, but there must be no interactive content descendant. То есть

понедельник, 15 июля 2019 г.

Не хочет обрабатывать события jquery

jquery не хочет обрабатывать события. Не могу понять в чем проблема.

$('#mybutton').click(function() { alert('Вы нажали на элемент "button"'); }); $('#mybutton').click();
Никак не реагирует на событие click у элемента #mybutton
Связи, ссылки везде прописаны. Зато реагирует на событие $(window).scroll.
Что может быть?


Ответ

Возможно, JavaScript-код срабатывает раньше, чем успевает загрузиться элемент

Это весь код или его фрагмент? Попробуйте следующий код, который дожидается загрузки DOM-структуры и лишь затем назначает события

понедельник, 18 февраля 2019 г.

Как определить на какую кнопку нажал пользователь

Итак, есть 5 кнопок на экране, нужно определить на какую кнопку нажал пользователь и взять её тег после чего редирект на другое активити. Пытался сделать это так:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState);
SetTheme(Android.Resource.Style.ThemeDeviceDefaultLightNoActionBar); SetContentView(Resource.Layout.MainScreen);
Button BtnHm = (Button)FindViewById(Resource.Id.Home); BtnHm.Click += SwitchActivity;
Button BtnSrch = (Button)FindViewById(Resource.Id.Search); BtnSrch.Click += SwitchActivity;
Button BtnLstOfPh = (Button)FindViewById(Resource.Id.ListOfPhotos); BtnLstOfPh.Click += SwitchActivity;
Button BtnGlr = (Button)FindViewById(Resource.Id.Glory); BtnGlr.Click += SwitchActivity;
Button BtnMyAcc = (Button)FindViewById(Resource.Id.MyAcc); BtnMyAcc.Click += SwitchActivity; }
public void SwitchActivity(object sender, EventArgs e) { Button sendBtn = (Button)sender;
switch (sendBtn.Tag) { case 1: Intent toMain = new Intent(this, typeof(MainScreenActivity)); StartActivity(toMain); break; case 2: Intent toSearch = new Intent(this, typeof(SearchActivity)); StartActivity(toSearch); break; case 3: Intent toPhoto = new Intent(this, typeof(ListOfPhotoActivity)); StartActivity(toPhoto); break; case 4: Intent toGlory = new Intent(this, typeof(GloryActivity)); StartActivity(toGlory); break; case 5: Intent toUser = new Intent(this, typeof(UserActivity)); StartActivity(toUser); break; } }
Но мне подчеркивает в case цифры и пишет что требуется постоянное значение. Как исправить?


Ответ

Чтобы вы ни писали в xml, в свойство Tag любое значение будет паковаться (Tag - всё же object). При запросе свойства вы будете всегда получать object, поэтому нужно провести распаковку:
switch ((int) sendBtn.Tag)

пятница, 14 декабря 2018 г.

Игнорируется часть кликов

На днях понадобилось написать программу, которая считает количество кликов, совершенных человеком. Однако заметил, что отлавливается не каждый клик: если человек совершает хотя бы 2-3 щелчка в секунду, часть точно будет проигнорирована. Как с таким бороться? Отлавливаю с помощью элементарной
private void opg_Click(object sender, EventArgs e) { count++; }


Ответ

Скорее всего, когда пользователь делает 2-3 клика в секунду, то это воспринимается системой как двойной клик (отдельное от обычного клика событие).
Попробуйте добавить:
private void opg_DoubleClick(object sender, EventArgs e) { count = count + 1; }
Также разницу поясняет справка от мелкомягких

пятница, 2 ноября 2018 г.

Как не писать код для каждой из 36 кнопок в WPF в C#?

В WPF присутствует 36 кнопок, при нажатии на каждую, должна изменятся переменная и выводится сообщение. Есть ли способ не писать по 36 раз в мейне:
public void button_Click1(object sender, RoutedEventArgs e) { amount += 100; System.Windows.MessageBox.Show("Message"); }
И при такой возможности, можно ли будет дать каждой кнопке свое сообщение?
Дополнено:
Я немного не понял. Можно расжевать? Будет как то так?