RaUI/Source/SkinPreview/SkinForms/SKinTabForm.cs
zilinsoft 11a117a46d ## 📅2025-06-27 星期五更新
### RaUI    V4.0.2506.2701
- *.[新增]RediskCheck类新增支持对.NET3.5和.NET6-.NET9安装状态的判断。
- *.[新增]RyImage类的LoadPic方法新增Timeout参数设置。
- *.[新增]ChromeTabControl控件新增OnTabAddButtonClick和OnTabCloseButtonClick事件。
- *.[新增]Strings类新增GetEngOrNumPos方法,获取字符串里的英文或数字。
- *.[改进]ChromeTabControl默认风格改进。
- *.[改进]GetTimeStr新增ShowSeconds参数。
- *.[改进]RyImage.LoadPic获取网络图片时,UA改为Edge的UA。
- *.[改进]ListBoxEx从内部控件改为公开控件。
- *.[修复]AddHosts(string list,bool write)函数write为false时,不再写入hosts。
- *.[修复]修复无法在属性界面修改RichTextBox2的WordWrap属性的BUG。
- *.[修复]修复ApkOp读取apk内部版本号时,如果版本号带数字0可能无法读取的BUG。
- *.[修复]修复GetVerByVerStr传入null值会报错的BUG。
- *.[修复]修复ComboBoxEx2控件修改SelectedItem和SelectedIndex属性不会激发SelectedIndexChanged事件的BUG。
- *.[修复]修复ApkOp解压某些apk文件时,可能导致文件被占用的BUG。
- *.[修复]修复TextBoxEx2控件通过代码设置文本,无法触发文本变化事件的BUG。
- *.[修复]修复TextBoxEx2控件使用Tab按键,无法切换输入的BUG。
2025-06-27 10:17:58 +08:00

149 lines
4.8 KiB
C#

using MGdu.WinFormUI;
using ryControls;
using SkinPreview;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace RySkins
{
[ComVisible(true)]
public partial class SKinTabForm : SKinForm
{
public new DateTime OpenTime { get; private set; } = DateTime.MinValue;
/// <summary>
/// 无参数启动
/// </summary>
public SKinTabForm() : base()
{
OpenTime = DateTime.Now;
InitializeComponent();
this.Resize += TabControl1_Resize;
InitTab();
}
/// <summary>
/// 无参数启动
/// </summary>
public SKinTabForm(string[] args) : base()
{
OpenTime = DateTime.Now;
InitializeComponent();
this.Resize += TabControl1_Resize;
InitTab();
}
private void InitTab()
{
UpdateSkins();
//chromeTabControl1.Radius =4;
chromeTabControl1.TabMaxWidth = 200;
chromeTabControl1.SizeMode = TabSizeMode.Fixed;
chromeTabControl1.SelectedIndexChanged += TabControl1_SelectedIndexChanged;
}
/// <summary>
/// 显示的窗口列表
/// </summary>
public List<Form> TabForms { get; set; }=new List<Form>();
private int _SelectedIndex = 0;
/// <summary>
/// 设置选择的标签页
/// </summary>
public int SelectedIndex {
get
{
return _SelectedIndex;
}
set
{
_SelectedIndex = value;
if(chromeTabControl1.TabPages.Count> _SelectedIndex)
{
chromeTabControl1.SelectedIndex= _SelectedIndex;
}
}
}
public void UpdateSkins()
{
chromeTabControl1.TabOnColorStart = XTheme.Mdi_TabActiveBackColorTop;
chromeTabControl1.TabOnColorEnd = XTheme.Mdi_TabActiveBackColorBottom;
chromeTabControl1.TabOffColorStart = XTheme.Mdi_TabDeactiveBackColorTop;
chromeTabControl1.TabOffColorEnd = XTheme.Mdi_TabDeactiveBackColorBottom;
chromeTabControl1.TabMoveColorStart = SkinSetting.TabMoveColorStart;
chromeTabControl1.TabMoveColorEnd = SkinSetting.TabMoveColorEnd;
chromeTabControl1.DrawTabBorder = SkinSetting.DrawTabBorder;
chromeTabControl1.BackTabPageColor = SkinSetting.AllTabBackColor;
this.BackColor= SkinSetting.AllTabBackColor;
//chromeTabControl1.wid
chromeTabControl1.Radius= XTheme.TabRadius;
chromeTabControl1.Refresh();
}
private void SKinTabForm_Load(object sender, EventArgs e)
{
UpdateSkins();
for (int i = 0; i < TabForms.Count; i++)
{
var item = TabForms[i];
item.EnabledChanged += Item_EnabledChanged;
TabPage tab = new TabPage
{
Text = item.Text+" ",
BackColor= SystemColors.Window
};
ryCommon.RyForm.SetChildStyle(item);
ryCommon.RyForm.SetParentWin(item, tab);
chromeTabControl1.TabPages.Add(tab);
if(i==_SelectedIndex)
{
item.Show();
}
}
ReizeUI();
}
private void Item_EnabledChanged(object sender, EventArgs e)
{
this.Enabled = ((Form)sender).Enabled;
}
private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
TabForms[chromeTabControl1.SelectedIndex].Activate();
TabForms[chromeTabControl1.SelectedIndex].Show();
}
private void TabControl1_Resize(object sender, EventArgs e)
{
ReizeUI();
}
private void ReizeUI()
{
if(chromeTabControl1.TabPages.Count!= TabForms.Count) { return; }
for (int i = 0; i < TabForms.Count; i++)
{
var item = TabForms[i];
chromeTabControl1.TabPages[i].Refresh();
ryCommon.RyForm.ResizeWin(item, chromeTabControl1.TabPages[i]);
}
}
private void SKinTabForm_FormClosing(object sender, FormClosingEventArgs e)
{
for (int i = 0; i < TabForms.Count; i++)
{
var item = TabForms[i];
item.Close();
}
}
private void SKinTabForm_FormClosed(object sender, FormClosedEventArgs e)
{
}
}
}