我正在创建一个将在平板电脑上运行的 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/