c# - Winforms - 如何允许用户使用隐藏控件增加 ListView 的字体大小?

标签 c# winforms listview

我正在创建一个将在平板电脑上运行的 winform 应用程序。该应用程序的一种窗体将具有 ListView 控件。

我想允许用户根据偏好更改字体大小(即他们今天还记得自己的眼镜吗)。我能想到的几种方法是数字上下或+/-按钮控件。这两种方式都需要非常有限的屏幕空间。

是否有一种控件或技术可以允许通过隐藏不使用控件来更改字体大小?

更新1:

基于 @GenericTeaType 的建议:

在类(class)层面:

Stopwatch sw = new Stopwatch();

在 ListView 控件上:

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();                    
            }
       }

最佳答案

您可以在表单 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;
}

关于c# - Winforms - 如何允许用户使用隐藏控件增加 ListView 的字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865455/

相关文章:

c# - 在 C# 中向图像添加 EXIF 信息

android - 最大化 ListView 中的可见行

Android:如何使用简单适配器将图像文件从 sd 卡放入 HashMap?

java - Android afterTextChanged获取EditText标签

c# - Windows 窗体和 C# 中控件的动态自上而下列表?

c# - 在 Installscript 中使用的 .NET dll 中使用 bool 返回值

c# - ComboBox 文本垂直居中对齐

c# - 每当数据库更新时更新 C# 客户端

c# - 如何使用泛型?

C# volatile 读取行为