我正在尝试将我的Windows窗体程序转换为WPF程序,以便在我的NotifyIcon系统托盘图标中获取图像。我有转换它的问题。我当前的程序有一个tabcontrol1,它使用函数:TabPages和DrawItem。 WPF没有这些功能,但是它没有TabPages,而是具有Items,但我不知道要为WPF更改“DrawItem”的内容。
我在Windows窗体中使用“DrawItem”的原因是更改Tab文本的颜色。
改变自:
if (!find<T>(p.Value))
{
T myPage = new T();
myPage.Text = "Ping";
this.FormstabControl.TabPages.Add(myPage);
this.FormstabControl.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
myPage.DataGridView.DataSource = p.Result;
}
要:
if (!find<T>(p.Value))
{
T myPage = new T();
myPage.Text = "Ping";
this.WPFtabControl.Items.Add(myPage);
//this.WPFtabControl.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
myPage.DataGridView.DataSource = p.Result;
}
我不得不注释掉DrawItem,因为我不知道该使用什么。此外,类型“T”的类型为“TabPages”而非Item。下面是Find函数,它检查Tabcontrol中是否已存在Tab。当我声明类型为T的myPage时,它会在不同的类中设置DataGridView(与定义T的地方相同。)我试图通过将WPF TabControl1抛入Windows.Form TabControl2来修复它,然后搜索tabcontrol的tabpages而不是传递WPF Tabcontrol项目。
private bool find<T>()
{
bool found = false;
System.Windows.Forms.TabControl FormstabControl= new System.Windows.Forms.TabControl();
FormstabControl.TabPages.Add(this.WPFtabControl.Items.ToString());
foreach (TabPage page in FormstabControl.TabPages)
{
if (page is T)
{
found = true;
break;
}
}
return found;
}
private bool find<T>(string text) where T : TabPage
{
bool found = false;
System.Windows.Forms.TabControl FormstabControl= new System.Windows.Forms.TabControl();
FormstabControl.TabPages.Add(this.WPFtabControl.Items.ToString());
foreach (TabPage page in FormstabControl.TabPages)
{
if (page is T && text.Equals(page.Text))
{
found = true;
break;
}
}
return found;
}
当我运行此应用程序和相邻函数时,它会运行并完成并添加BLANK文本选项卡,但不会向TabControl中的数据网格返回任何数据。我不知道出了什么问题。
如何在NotifyIcon中合并图像?我把它合并如下:
this.notifyIcon.ContextMenu = new ContextMenu();
this.notifyIcon.ContextMenu.MenuItems.Add(new MenuItem("Hide", new EventHandler(hideApp)));
this.notifyIcon.ContextMenu.MenuItems.Add(new MenuItem("Show", new EventHandler(showApp)));
this.notifyIcon.ContextMenu.MenuItems.Add(new MenuItem("Exit", new EventHandler(exitApp)));