C#Windows.Forms将代码转换为WPF

时间:2013-12-11 15:59:28

标签: c# .net wpf xaml datagridview

我正在尝试将我的Windows窗体程序转换为WPF程序,以便在我的NotifyIcon系统托盘图标中获取图像。我有转换它的问题。我当前的程序有一个tabcontrol1,它使用函数:TabPages和DrawItem。 WPF没有这些功能,但是它没有TabPages,而是具有Items,但我不知道要为WPF更改“DrawItem”的内容。

我在Windows窗体中使用“DrawItem”的原因是更改Tab文本的颜色。

Plus and minus next to the options.

改变自:

      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)));

0 个答案:

没有答案