Winforms - Как разрешить пользователю увеличить размер шрифта просмотра списка со скрытыми элементами управления? - PullRequest
2 голосов
/ 19 мая 2010

Я создаю приложение winform, которое будет работать на планшетном ПК. Одна форма для этого приложения будет иметь контроль списка.

Я хотел бы разрешить пользователю изменять размер шрифта в зависимости от предпочтений (то есть, помнили ли они свои очки сегодня). Несколько способов, которыми я могу придумать, это числовые элементы управления «вверх-вниз» или «+/-». Оба эти способа требуют очень ограниченного использования экрана.

Существует ли элемент управления или метод, позволяющий изменять размер шрифта с помощью скрытого элемента управления, когда он не используется?

ОБНОВЛЕНИЕ 1:

На основании предложения от @ GenericTeaType :

На уровне класса:

Stopwatch sw = new Stopwatch();

В элементе управления списком:

private void lst1_MouseDown(object sender, MouseEventArgs e)
    {
        //start stopwatch
        sw.Reset();
        sw.Start();
    }

private void lst1_MouseUp(object sender, MouseEventArgs e)
    {
        //stop stopwatch
        sw.Stop();
        //how long did stopwatch run for
        TimeSpan elapsedTime = sw.Elapsed;
        //show font change form if time exceeds 3 seconds
            if (elapsedTime.Seconds >= 3)
            {
                //show form - pass in current listview font size
                frmFontSizeChange ffsc = new frmFontSizeChange(slv.ReleaseFontSize);
                ffsc.ShowDialog();

                //refresh schedule with new font size
                populate_lst1();                    
            }
       }

Ответы [ 3 ]

2 голосов
/ 19 мая 2010

Ну, вы могли бы просто добавить скрытый элемент управления, но если вы не собираетесь его показывать, я не думаю, что есть особый смысл. Просто обработайте событие KeyPress или KeyDown в форме и / или в виде списка и, если оно + или -, увеличьте или уменьшите его.

Или, возможно, было бы безопаснее использовать что-то вроде Ctrl + +, а не просто +.

2 голосов
/ 19 мая 2010

Вы можете просто показать / скрыть элемент управления в течение определенного периода времени в событии MouseClick формы.

Например:

public Form1()
{
    InitializeComponent();
    Timer1.Tick += new EventHandler(Timer1_Tick);
}

Timer Timer1;

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
    // Will need handling to ensure it's not already displaying, etc... then:
    FontSizeControl.Show();
    Timer1.Enabled = true;
}

private void FontSizeControl_FontSizeChanged(object sender, EventArgs e)
{

    // Change the font size
    ...

    // Reset the timer
    Timer1.Enabled = false;
    Timer1.Enabled = true;

}

void Timer1_Tick(object sender, EventArgs e)
{
    FontSizeControl.Hide();
    Timer1.Enabled = false;
}

То, что это в основном сделало бы, это показать изменяющийся элемент управления FontSize, который вы сделали (или создадите), когда пользователь касается экрана. Если они не коснутся элемента управления, он изменится, когда отметка Timer. Или оно исчезнет после того, как пользователь перестанет нажимать +/- в течение x миллисекунд.

ОБНОВЛЕНИЕ для показа через 3 секунды.

public Form1()
{
    InitializeComponent();
    Timer2.Tick += new EventHandler(Timer2_Tick);
    Timer2.Interval = 3000;
}

Timer Timer2;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    Timer2.Enabled = true;
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
    Timer2.Enabled = false;
}

void Timer2_Tick(object sender, EventArgs e)
{
    FontSizeControl.Show();
    Timer2.Enabled = false;
}
1 голос
/ 19 мая 2010

Я не знаю для планшетного ПК, но разве FontDialog не справится с этой задачей? Когда он не используется, он скрыт, и вы можете даже создать его при щелчке по кнопке, поэтому для его запуска требуются ресурсы и т. Д.

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