using System;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.Win32;
namespace SpecialFolder
{
public partial class FormFolder : Form
{
#region AnimateWindow
[DllImport("user32.dll", EntryPoint = "AnimateWindow")]
private static extern bool AnimateWindow(IntPtr handle, int ms, int flags);
#endregion
private ChineseLunisolarCalendar lunarCalendar = new ChineseLunisolarCalendar();
public FormFolder()
{
#region
InitializeComponent();
this.Text = Environment.UserName;
this.StartPosition = FormStartPosition.CenterScreen; // 在桌面居中显示。
this.AutoSizeMode = AutoSizeMode.GrowAndShrink; // 禁用手动调整大小。
this.SizeGripStyle = SizeGripStyle.Hide; // 隐藏调整大小手柄。
statusStripInfo.SizingGrip = false; // 隐藏状态栏调整大小手柄。
listViewIE.CheckBoxes = true; // 显示复选框。
listViewIE.GridLines = true; // 显示网格线。
listViewIE.HotTracking = true; // 超链接外观。
listViewIE.MultiSelect = false; // 用户仅能选择一项。
listViewIE.ShowItemToolTips = true; // 显示工具提示。
listViewIE.HeaderStyle = ColumnHeaderStyle.None; // 隐藏列标题。
listViewIE.View = View.Details; // 详细信息。
listViewIE.BeginUpdate();
using (RegistryKey userKey = Registry.CurrentUser.CreateSubKey(@"Software/Microsoft/Internet Explorer/TypedURLs"))
{
foreach (string mru in userKey.GetValueNames())
{
if (mru != "MRUList")
listViewIE.Items.Add(userKey.GetValue(mru) as string).Tag = mru;
}
}
listViewIE.EndUpdate();
listViewIE.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); // 自动调整列宽。
columnHeaderTemp.Width = Math.Max(columnHeaderTemp.Width, listViewIE.ClientSize.Width);
#endregion
}
#region FormLoad
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
AnimateWindow(this.Handle, 1000, 0x60004); // 淡入淡出效果。
}
#endregion
#region FormClosing
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
AnimateWindow(this.Handle, 1000, 0x50008); // 淡入淡出效果。
}
#endregion
#region listViewIE_MouseClick
private void listViewIE_MouseClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listViewIE.HitTest(e.Location);
if ((info.Location & ListViewHitTestLocations.Label) != 0)
System.Diagnostics.Process.Start(info.Item.Text);
}
#endregion
#region CheckedAll
private void toolButtonAll_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in listViewIE.Items)
{
item.Checked = true;
}
}
private void toolButtonCancel_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in listViewIE.CheckedItems)
{
item.Checked = false;
}
}
#endregion
#region ClearAll
private void toolButtonClear_Click(object sender, EventArgs e)
{
using (RegistryKey userKey = Registry.CurrentUser.CreateSubKey(@"Software/Microsoft/Internet Explorer/TypedURLs"))
{
foreach (ListViewItem item in listViewIE.CheckedItems)
{
userKey.DeleteValue(item.Tag as string, false); // false, 指定的值不存在时不引发异常。
item.Remove();
}
}
}
#endregion
#region DateTimeFormatInfo
private void timerInfo_Tick(object sender, EventArgs e)
{
Application.CurrentCulture.ClearCachedData();
DateTime solar = DateTime.Now;
int month = lunarCalendar.GetMonth(solar);
int leapMonth = lunarCalendar.GetLeapMonth(lunarCalendar.GetYear(solar));
if (0 < leapMonth && leapMonth <= month)
--month;
statusLabelTime.Text = string.Format("{0:F} [{1} {2:00}]", solar, DateTimeFormatInfo.CurrentInfo.MonthNames[month - 1], lunarCalendar.GetDayOfMonth(solar));
}
#endregion
}
}