C#远程桌面连接工具分分快三计划

作者:编程技术

 4、RdpTabPage类

有关Theme,笔者的领会是和ASP.NET主题中的CSS是几个意味,当然,Sl中的样式越来越的精锐。

类层次

System.Threading.DispatcherObject

能够获悉代码是不是运转在科学的线程上,通过调节器封送代码到顾客分界面线程。

System.Windows.DependencyObject

支撑改换公告,暗中同意值世襲,和越来越多划算的性质存款和储蓄。从这几个类派生,就赢得了对重视属性的扶持。

System.Windows.Media.Visual

Visual类的派生类能够呈现在窗口中。

System.Windows.UIElement

匡助布局、输入、主旨和事件等WPF要素,还援助路由事件,命令等。

System.Windows.FrameworkElement

FrameworkElement是世袭树的末梢一站。它增多了豆蔻梢头部分更切实的布局属性如:HorizontalAlignment,Margin。还协助数据绑定,动画,和样式。

System.Windows.Controls.Control

控件是能和顾客人机联作的要素。控件类帮忙模板。

System.Windows.Controls.ContentControl

System.Windows.Controls.ItemsControl

System.Windows.Controls.Panel

3、在VS项目中援引C:WindowsSystem32mstscax.dll

   4,应用主旨:

WPF使用四个多档次的架构。在最上端,你的使用与高层的劳务相互影响,这么些劳务完全以托管的C#代码书写。在处之泰然,使用多个低层的非托管组件milcore.dll翻译.NET对象到Direct3D纹理和三角形。milcore.dll使用非托管代码达成,因为它需求紧凑地整合Direct3D,还因为它对品质最棒敏感。

分分快三计划 1

       效果:分分快三计划 2         其早就覆盖了对根成分的Background设置的另生机勃勃种颜色。

它富有顶层的WPF类型,包罗windows,panels,和别的的控件类型。它也促成诸如Style等高层程序抽象。你将应用的绝大相当多类都来自于这几个装配体。

      1,装完Silverlight Tookit之后,在C:Program FilesMicrosoft SDKsSilverlightv3.0ToolkitJul09Themes目录下边会有大器晚成部分主题的dll,大家援引在那之中二个dll文件,以System.Windows.Controls.Theming.ShinyRed.dll为例

PresentationCore.dll

分分快三计划 3

  5,这里大家设置了背景为Blcak,看看效果:

它富有诸如UIElement和Visual等基类,全数的形态和控件派生自这么些基类。借让你无需完整的window和control抽象层,你能降到那层,仍接纳WPF的展现引擎。

using System;

using System.Windows.Forms;

namespace RdpClient
{
    public partial class Form_Main : Form
    {
        #region 构造
        public Form_Main()
        {
            InitializeComponent();
        }
        #endregion

        #region 方法
        /// <summary>
        /// 绑定远程桌面列表
        /// </summary>
        private void BindMenuItem()
        {
            tsb_Rdps.DropDownItems.Clear();
            if (Config.RdpInfos == null) return;

            foreach (var info in Config.RdpInfos.Items)
            {
                ToolStripMenuItem item = new ToolStripMenuItem();
                item.ImageScaling = ToolStripItemImageScaling.SizeToFit;
                item.Name = string.Format("MenuItem{0}", info.AliasName);
                item.Text = info.AliasName;
                item.Tag = info;
                tsb_Rdps.DropDownItems.Add(item);
            }
        }

        public void RdpConnect(RdpInfo info)
        {
            RdpTabPage rdpTab = new RdpTabPage();
            rdpTab.Text = info.AliasName;

            foreach (TabPage tp in tab_Rdps.TabPages)
            {
                if (tp.Text == rdpTab.Text)
                {
                    tab_Rdps.SelectTab(tp);
                    return;
                }
            }

            tab_Rdps.TabPages.Add(rdpTab);
            rdpTab.Connect(info);
            tab_Rdps.SelectTab(rdpTab);
        }
        #endregion

        #region 事件
        private void Form_Main_Load(object sender, EventArgs e)
        {
            Config.Load();
            BindMenuItem();
        }
        private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("确定退出程序?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
            {
                e.Cancel = true;
                return;
            }
        }

        /// <summary>
        /// 连接远程桌面
        /// </summary>
        private void tsb_Rdps_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            RdpInfo item = e.ClickedItem.Tag as RdpInfo;
            if (item == null) return;

            RdpConnect(item);
        }

        /// <summary>
        /// 双击选项卡时关闭相应选项卡
        /// </summary>
        private void tab_Rdps_DoubleClick(object sender, EventArgs e)
        {
            if (tab_Rdps.SelectedIndex < 0) return;

            RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
            if (rdpTab != null)
            {
                rdpTab.Disconnect();
            }
        }

        /// <summary>
        /// 关闭当前Tab页的远程桌面
        /// </summary>
        private void tsb_Disconnect_Click(object sender, EventArgs e)
        {
            if (tab_Rdps.SelectedIndex < 0) return;

            RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
            if (rdpTab != null)
            {
                rdpTab.Disconnect();
            }
        }

        /// <summary>
        /// 关闭所有Tab页的远程桌面
        /// </summary>
        private void tsb_DisconnectAll_Click(object sender, EventArgs e)
        {
            foreach (TabPage tab in tab_Rdps.TabPages)
            {
                RdpTabPage rdpTab = (RdpTabPage)tab;
                rdpTab.Disconnect();
            }
        }

        /// <summary>
        /// 最大化
        /// </summary>
        private void tsb_Max_Click(object sender, EventArgs e)
        {
            if (tab_Rdps.SelectedIndex < 0) return;

            RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
            if (rdpTab != null)
            {
                var rdpc = rdpTab.Controls[0] as AxMSTSCLib.AxMsRdpClient9;
                rdpc.FullScreen = true;
                rdpc.FullScreenTitle = rdpTab.Text;
            }
        }

        private void tsb_Config_Click(object sender, EventArgs e)
        {
            Form_Settings form = new Form_Settings();
            if (form.ShowDialog() == DialogResult.OK)
            {
                BindMenuItem();
            }
        }

        private void tsb_About_Click(object sender, EventArgs e)
        {
            MessageBox.Show("远程桌面", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        #endregion
    }
}
          <Red:ShinyRedTheme>

            <StackPanel x:Name="LayoutRoot"

                    Width="207"

                    Margin="35,39,158,81"

                    Height="180">

            <Button Content="Button"

                    Margin="10"></Button>           

            <Button Content="Button"

                    Height="23"                    

                    Name="button1"

                    Width="75" />

            </StackPanel>

           </Red:ShinyRedTheme>

WindowsBase.dll

2、增添LacrosseDP Control控件到工具箱中。作者选拔的LacrosseDP Client Control (redistributable) - version 9

转自:

PresentationFramework.dll

 分分快三计划 4

       4,因为主旨控件中只好分包一个子控件,所以这里运用了二个StackPanel作为容器

那全数更基本元素,有异常的大可能重用在WPF之外,诸如DispatcherObject和DependencyObject,它们推荐注重属性的主干架构。

5、主窗体

        <Grid Background="Black">

        <StackPanel x:Name="LayoutRoot" Width="248" Margin="100" 

            Theme:ImplicitStyleManager.ApplyMode="Auto"

                    Theme:ImplicitStyleManager.ResourceDictionaryUri="Themes/RainierOrange.xaml"

                Height="382">

       <Button Content="Button" Margin="10" ></Button>

       </StackPanel>

       </Grid>

6、程序下载地址

率先种办法:

1、注册控件:regsvr32 C:WindowsSystem32mstscax.dll。

xmlns:Theme="clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.Toolkit"

using System;
using System.Windows.Forms;

namespace RdpClient
{
    public class RdpTabPage : TabPage
    {
        AxMSTSCLib.AxMsRdpClient9 rdpc = null;
        protected override void OnCreateControl()
        {
            rdpc = new AxMSTSCLib.AxMsRdpClient9();
            rdpc.OnDisconnected  = new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
            this.Controls.Add(rdpc);
            rdpc.Dock = DockStyle.Fill;
            base.OnCreateControl();
        }

        void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
        {
            ((TabControl)this.Parent).TabPages.Remove(this);
        }

        public void Disconnect()
        {
            try
            {
                if (rdpc.Connected == 1)
                {
                    rdpc.Disconnect();
                }
            }
            catch (Exception) { }
        }

        private void SetRdpClientProperties(RdpInfo info)
        {
            rdpc.Server = info.MachineName;
            rdpc.UserName = info.UserName;
            rdpc.Domain = "";
            rdpc.AdvancedSettings9.RDPPort = info.RdpPort;
            rdpc.AdvancedSettings9.ClearTextPassword = info.Password;
            rdpc.AdvancedSettings9.RedirectDrives = true;
            rdpc.AdvancedSettings9.RedirectPrinters = true;
            rdpc.AdvancedSettings9.RedirectSmartCards = true;
            rdpc.AdvancedSettings9.ConnectToServerConsole = true;
            rdpc.ColorDepth = 32;
            rdpc.Dock = DockStyle.Fill;
        }

        public void Connect(RdpInfo info)
        {
            SetRdpClientProperties(info);
            rdpc.Connect();
        }
    }
}

    3增多System.Windows.Controls.Theming.Toolkit.dll,并在页面进行援用

 

          xmlns:Red="clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.ShinyRed"

         分分快三计划 5     其时效果就跟第意气风发种分裂样了,它能够调控到应用焦点的控件。

     2,将文件增加进去以往,有三个地点是很关键的,正是将RainierOrange.xaml的BuildAction的品质由Page改为Content,假诺不这么做的话,VS会爆出AG_E_PARSER_BAD_PROPERTY_VALUE那样的不当,同一时候供给加上主旨文件中引用到的dll。

      2,在XAML中加多对这么些dll的援用

        分分快三计划 6       重要正是Theme二种核心能够切换,因为只是模仿,所以UI上只放了三个List博克斯用来采撷差异的宗旨

         1,选拔二个大旨文件,能够从C:Program FilesMicrosoft SDKsSilverlightv3.0ToolkitJul09ThemesXaml目录下抉择,这里将其复制到Themes文件中。

       public void LoadTheme()

        {

            this.listBox1.Items.Add(new ComboBoxItem() { Content = "TwilightBlue", Name = "TwilightBlue", DataContext = "Themes/TwilightBlue.xaml", IsEnabled = true });

            this.listBox1.Items.Add(new ComboBoxItem() { Content = "RainierOrange", Name = "RainierOrange", DataContext = "Themes/RainierOrange.xaml",IsEnabled = true });           

            this.listBox1.SelectionChanged  =

                (obj, e) =>

                {

                    if (e != null)

                    {

                        StackPanel stack = new StackPanel();

                        Button btn = new Button();

                        stack.Children.Add(btn);

                        this.LayoutRoot.Children.Clear();

                        this.LayoutRoot.Children.Add(stack);

                        Uri uri = new Uri((this.listBox1.SelectedItem as ComboBoxItem).DataContext.ToString(), UriKind.RelativeOrAbsolute);

                        ImplicitStyleManager.SetResourceDictionaryUri(stack, uri);

                        ImplicitStyleManager.SetApplyMode(stack, ImplicitStylesApplyMode.Auto);

                        ImplicitStyleManager.Apply(stack);

                    }

                };

        }

第2种方式:

      3,把这里的主旨当成三个控件,那么须要利用那么些主旨的控件应该是其子控件

           分分快三计划 7

恢宏:动态换宗旨

     有叁个地方须要在意的就是对于Themes下的xaml文件BuildAction不能够为Page类型,否则会产出不能够找到相应能源的荒唐

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 WPF silverlight相