Skip to content

Commit 79283f4

Browse files
committedOct 21, 2023
Optimize navigation framework
1 parent 497b828 commit 79283f4

File tree

3 files changed

+49
-72
lines changed

3 files changed

+49
-72
lines changed
 

‎Source/GrasscutterTools/Forms/FormMain.Designer.cs

+9-25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Source/GrasscutterTools/Forms/FormMain.cs

+39-13
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ private void FormMain_Load(object sender, EventArgs e)
148148
Logger.I(TAG, $"{page.Name} OnLoad completed");
149149
}
150150

151+
// 默认选中首页
152+
if (ListPages.SelectedIndex == -1)
153+
ListPages.SelectedIndex = 0;
154+
151155
Logger.I(TAG, "FormMain_Load completed");
152156
}
153157

@@ -207,7 +211,6 @@ private void InitPages()
207211
{
208212
Logger.I(TAG, "InitPages enter");
209213
Pages = new Dictionary<string, BasePage>(32);
210-
TCMain.SuspendLayout();
211214
CreatePage<PageHome>();
212215
var poc = CreatePage<PageOpenCommand>();
213216
poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand);
@@ -233,7 +236,6 @@ private void InitPages()
233236
#if DEBUG
234237
CreatePage<PageTools>();
235238
#endif
236-
TCMain.ResumeLayout();
237239
Logger.I(TAG, "InitPages completed");
238240
}
239241

@@ -377,7 +379,19 @@ private void ListPages_SelectedIndexChanged(object sender, EventArgs e)
377379
.ElementAt(ListPages.SelectedIndex)
378380
.Item1;
379381
// 通过Key找到页面的父节点也就是TabPage,设置为选中项
380-
TCMain.SelectedTab = Pages[key].Parent as TabPage;
382+
ShowPage(Pages[key]);
383+
}
384+
385+
/// <summary>
386+
/// 展示页面
387+
/// </summary>
388+
/// <param name="page">页面实例</param>
389+
private void ShowPage(BasePage page)
390+
{
391+
NavContainer.Panel2.SuspendLayout();
392+
NavContainer.Panel2.Controls.Clear();
393+
NavContainer.Panel2.Controls.Add(page);
394+
NavContainer.Panel2.ResumeLayout();
381395
}
382396

383397
/// <summary>
@@ -422,9 +436,6 @@ private void ListPages_SizeChanged(object sender, EventArgs e)
422436
Name = typeof(T).Name,
423437
};
424438
Pages.Add(page.Name, page);
425-
var tp = new TabPage();
426-
TCMain.TabPages.Add(tp);
427-
tp.Controls.Add(page);
428439
return page;
429440
}
430441

@@ -698,13 +709,18 @@ private void FormMain_KeyDown(object sender, KeyEventArgs e)
698709
// F5 为执行命令
699710
OnOpenCommandInvoke();
700711
}
701-
else if (e.Alt && e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
712+
else if ((e.Alt || e.Control) && e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
702713
{
703-
// Alt+数字键 = 跳转到对应页面
714+
// Alt|Ctrl+数字键 = 跳转到对应页面
704715
var i = e.KeyCode == Keys.D0 ? 9 : e.KeyCode - Keys.D1;
705716
if (i < ListPages.Items.Count)
706717
ListPages.SelectedIndex = i;
707718
}
719+
else if (e.Control && e.KeyCode == Keys.Tab)
720+
{
721+
// 切换到下一个页面
722+
ListPages.SelectedIndex = (ListPages.SelectedIndex + 1) % ListPages.Items.Count;
723+
}
708724
else if (Common.KeyGo.IsEnabled == false)
709725
{
710726
foreach (var hotkeyItem in Common.KeyGo.Items)
@@ -755,13 +771,23 @@ private void ShowTip(string message, Control control)
755771
/// 导航到目标页面并返回该页面实例
756772
/// </summary>
757773
/// <typeparam name="TPage">页面类型</typeparam>
758-
/// <returns>如果导航到了则返回页面实例,否则返回空</returns>
759774
public TPage NavigateTo<TPage>() where TPage : BasePage
760775
{
761-
ListPages.SelectedIndex = -1;
762-
var page = Pages[typeof(TPage).Name];
763-
TCMain.SelectedTab = page.Parent as TabPage;
764-
return page as TPage;
776+
var key = typeof(TPage).Name;
777+
var page = Pages[key] as TPage;
778+
var i = 0;
779+
foreach (var it in PageTabOrders.Where(it => it.Item2))
780+
{
781+
if (it.Item1 == key)
782+
{
783+
ListPages.SelectedIndex = i;
784+
return page;
785+
}
786+
i++;
787+
}
788+
789+
ShowPage(page);
790+
return page;
765791
}
766792

767793
#endregion - 通用 General -

‎Source/GrasscutterTools/Forms/FormMain.resx

+1-34
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
</data>
134134
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
135135
<data name="ListPages.ItemHeight" type="System.Int32, mscorlib">
136-
<value>22</value>
136+
<value>25</value>
137137
</data>
138138
<data name="ListPages.Location" type="System.Drawing.Point, System.Drawing">
139139
<value>0, 0</value>
@@ -171,39 +171,6 @@
171171
<data name="NavContainer.Panel1MinSize" type="System.Int32, mscorlib">
172172
<value>80</value>
173173
</data>
174-
<data name="TCMain.Appearance" type="System.Windows.Forms.TabAppearance, System.Windows.Forms">
175-
<value>FlatButtons</value>
176-
</data>
177-
<data name="TCMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
178-
<value>Fill</value>
179-
</data>
180-
<data name="TCMain.ItemSize" type="System.Drawing.Size, System.Drawing">
181-
<value>0, 1</value>
182-
</data>
183-
<data name="TCMain.Location" type="System.Drawing.Point, System.Drawing">
184-
<value>0, 0</value>
185-
</data>
186-
<data name="TCMain.MinimumSize" type="System.Drawing.Size, System.Drawing">
187-
<value>610, 275</value>
188-
</data>
189-
<data name="TCMain.Size" type="System.Drawing.Size, System.Drawing">
190-
<value>656, 275</value>
191-
</data>
192-
<data name="TCMain.TabIndex" type="System.Int32, mscorlib">
193-
<value>4</value>
194-
</data>
195-
<data name="&gt;&gt;TCMain.Name" xml:space="preserve">
196-
<value>TCMain</value>
197-
</data>
198-
<data name="&gt;&gt;TCMain.Type" xml:space="preserve">
199-
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
200-
</data>
201-
<data name="&gt;&gt;TCMain.Parent" xml:space="preserve">
202-
<value>NavContainer.Panel2</value>
203-
</data>
204-
<data name="&gt;&gt;TCMain.ZOrder" xml:space="preserve">
205-
<value>0</value>
206-
</data>
207174
<data name="&gt;&gt;NavContainer.Panel2.Name" xml:space="preserve">
208175
<value>NavContainer.Panel2</value>
209176
</data>

0 commit comments

Comments
 (0)
Please sign in to comment.