zoukankan      html  css  js  c++  java
  • WPF小试牛刀

      想法很简单, 做一个程序, 可以同时启动若干个程序的...

      用C++做, 实现功能应该挺快, 但界面显示, 实在不敢保证, Qt还没用熟, 想来用C#要比用熟Qt快一些, 于是决定用WPF做

      昨晚折腾了几个小时, 逐渐摸熟WPF的基本流程, 发现跟Java很像啊, 以后在windows上得学学C#, 果然如小吴所说, 是windows上面的程序制作利器

      哈哈, 上面的一个ico, 是来自BYHH的ID为yanhuang的某网友, 当初在网上说说要做这个, 他说做一个挺好, 嗯, 昨晚本来想三国杀一下的, 想想, 做点事吧

      先上效果图, 其实很挫, 很多可以完善

      嗯, 然后上源码, 程序灰常简单, 都不值一提了

    Info.cs 文件
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace QQ_Byhh
    {
        class Info
        {
            public string path;
            public string Path
            {
                get { return path; }
                set { path = value; }
            }
    
        }
    }
    MainWindow.xaml文件
    
    <Window x:Class="QQ_Byhh.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="QQ_Byhh" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="50" />
            </Grid.RowDefinitions>
            <ListView Name="ProgramList" MinWidth="280" ItemsSource="{Binding Path=mPath}">
                <ListView.View>
                    <GridView x:Name="ProgramGrid">
                        <GridViewColumn Header="ProgramPath"  Width="400" DisplayMemberBinding="{Binding Path=Path}"></GridViewColumn>
                        <GridViewColumn Header="Operate" Width="99">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Button Content="Delete"  Width="75" Height="23" Click="Button_Click" CommandParameter="{Binding Path=Path}"/>                              
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
            
            <Button Grid.Row="1" HorizontalAlignment="Right" Name="Add" Margin="0,0,350,0" Click="Add_Click">Add Program</Button>
            <Button Grid.Row="1" HorizontalAlignment="Right" Name="Start" Margin="0,0,62,0" Click="Start_Click">Start Program</Button>
        </Grid>
    </Window>
    MainWindow.xaml.cs文件
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Diagnostics;
    
    namespace QQ_Byhh
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            private List<Info> mPath = new List<Info>();
            //List<string> mName = new List<string>();
    
            public MainWindow()
            {
                InitializeComponent();
                this.DataBinding();
            }
    
            private void Add_Click(object sender, RoutedEventArgs e)
            {
                bool AddFlag = true;
                Microsoft.Win32.OpenFileDialog oFile = new Microsoft.Win32.OpenFileDialog();
                oFile.InitialDirectory = @"c:\";
                oFile.RestoreDirectory = true;
                oFile.Filter = "文本文件(*.exe)|*.exe";
                oFile.ShowDialog();
                if (oFile.FileName != "")
                {
                    for (int i = 0; i < mPath.Count; i++)
                    {
                        if (mPath[i].path == oFile.FileName)
                        {
                            AddFlag = false;
                        }
                    }
                    if (AddFlag)
                    {
                        Info myPath = new Info()
                        {
                            path = oFile.FileName
                        };
                        mPath.Add(myPath);
                    }
                }
                this.ProgramList.Items.Refresh();
            }
    
            private void DataBinding()
            {
                this.ProgramList.ItemsSource = mPath;//为ListView绑定数据源  
            }
    
            private void DeleteProgram(string sP)
            {
               
                if (mPath.Count > 0)
                {
                    for (int i = 0; i < mPath.Count; i++)
                    {
                        if (mPath[i].path == sP)
                        {
                            mPath.Remove(mPath[i]);
                        }
                    }
                }
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                Button b = sender as Button;
                string sP = Convert.ToString(b.CommandParameter);
                this.DeleteProgram(sP);
                this.ProgramList.Items.Refresh();
            }
    
            private void Start_Click(object sender, RoutedEventArgs e)
            {
                for (int i = 0; i < mPath.Count; i++)
                {
                    Process p = new Process();
                    p.StartInfo.FileName = mPath[i].path;
                    p.Start();
                }
                
            }  
        }
    }

      C#在windows上果然很强大啊, 学了半天就能做个像模像样的, 以后得多加学习一下

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/moondark/p/2713032.html
Copyright © 2011-2022 走看看