爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5052|回复: 4

[资源分享] c#调用surfer源码,附学习资料

[复制链接]

新浪微博达人勋

发表于 2016-7-19 08:36:03 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 xyangtian 于 2016-12-11 10:59 编辑
  1. using Microsoft.Win32;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Navigation;
  15. using System.Windows.Shapes;
  16. using Surfer;
  17. using System.IO;



  18. namespace surfer
  19. {
  20.     /// <summary>
  21.     /// MainWindow.xaml 的交互逻辑
  22.     /// </summary>
  23.     public partial class MainWindow : Window
  24.     {
  25.         public MainWindow()
  26.         {

  27.         }
  28.         string levelFilePath;
  29.         string[] fileName = new string[] { };
  30.         string[] blankFileName = new string[] { };
  31.         string[] baseMapFileName = new string[] { };

  32.         List<string > listFile = new List<string>();
  33.         List<string> listFileName = new List<string>();
  34.         List<string> strListFileName = new List<string>();
  35.         List<string> blankFile = new List<string>();
  36.         List<string> baseMap = new List<string>();
  37.         public void button_Click(object sender, RoutedEventArgs e)
  38.         {
  39.             OpenFileDialog ofdName = new OpenFileDialog();
  40.             ofdName.Title = "选择网格文件";
  41.             ofdName.Filter = "dat文件|*.dat|所有文件|*.*";
  42.             ofdName.FileName = string.Empty;
  43.             ofdName.RestoreDirectory = true;
  44.             ofdName.DefaultExt = "dat";
  45.             ofdName.Multiselect = true;
  46.             ofdName.ShowDialog();

  47.             fileName = ofdName.FileNames;
  48.             for (int i = 0; i < fileName.Length; i++)
  49.             {
  50.                 listFile.Add(fileName[i]);
  51.                
  52.                 strListFileName.Add( fileName[i].Substring(fileName[i].LastIndexOf("\") + 1, (fileName[i].LastIndexOf(".") - fileName[i].LastIndexOf("\") - 1)));

  53.                 try
  54.                 {
  55.                     listFileName.Add(fileName[i].Remove(fileName[i].LastIndexOf(".")));//移除文件后缀
  56.                 }
  57.                 catch (Exception)
  58.                 {

  59.                     MessageBox.Show("请选择文件");
  60.                 }
  61.                
  62.             }
  63.         }

  64.         



  65.         private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
  66.         {

  67.         }

  68.         private void button1_Click(object sender, RoutedEventArgs e)
  69.         {
  70.             for (int i = 0; i < listFile.LongCount(); i++)
  71.             {
  72.                 Surfer.Application surfer = new Surfer.Application();
  73.                 surfer.Visible = false;
  74.                 IDocuments docs = surfer.Documents;
  75.                 IWksDocument wks = (IWksDocument)docs.Open(listFile[i]); //打开dat文件

  76.                 dynamic maxidh = wks.Columns(2).Statistics().Maximum;//统计第二列的最大值
  77.                 dynamic minidh = wks.Columns(2).Statistics().Minimum;

  78.                 dynamic maxigc = wks.Columns(4).Statistics().Maximum;
  79.                 int maxiint = Convert.ToInt32(maxigc);

  80.                 wks.Close();

  81.                 surfer.GridData(DataFile: listFile[i],          //数据文件地址

  82.                 xCol: 2,                                        //x为第一列数据

  83.                 yCol: 6,                                        //y为第二列数据

  84.                 zCol: 3,                                        //z为第三列数据

  85.                 ExclusionFilter: Filter.Text,

  86.                 DupMethod: Surfer.SrfDupMethod.srfDupFirst,

  87.                 NumCols: (maxidh - minidh) / Convert.ToInt32(NumCols.Text),      //x方向插值数据量

  88.                 NumRows: (maxiint - Convert.ToInt32(yMinBox.Text)) / Convert.ToInt32(NumRows.Text),        //y方向插值数据量

  89.                 xMin: minidh,                               //x最小值

  90.                 xMax: maxidh,                               //x最大者

  91.                 yMin: Convert.ToInt32(yMinBox.Text),                                //y最小值

  92.                 yMax: maxiint,                                //y最大值

  93.                 Algorithm: Surfer.SrfGridAlgorithm.srfKriging,  //插值算法Kriging

  94.                 OutGrid: listFileName[i] + ".grd",                     //返回文件为gridfile

  95.                 OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);  //返回文件编码为Ascii
  96.                 try
  97.                 {
  98.                     surfer.GridFilter(listFileName[i] + ".grd", Filter: SrfFilter.srfFilterGaussianLP, EdgeOp: SrfFilterEdge.srfFltEdgeReplicate, BlankOp: SrfFilterBlank.srfFltBlankLeave, OutGrid: listFileName[i] + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  99.                     //surfer.GridSplineSmooth(listFileName[i] + ".grd", nRow: 2, nCol: 2, Method: SrfSplineMethod.srfSplineInsert, OutGrid: textBox.Text + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  100.                     surfer.GridBlank(InGrid: listFileName[i] + ".grd", BlankFile: blankFile[i], OutGrid: listFileName[i] + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  101.                     IPlotDocument Doc = (IPlotDocument)docs.Add(SrfDocTypes.srfDocPlot);    //创建一个空白绘图文档
  102.                     IShapes Shapes = Doc.Shapes;
  103.                     IMapFrame contourMapFrame = Shapes.AddContourMap(listFileName[i] + ".grd");    //加载网格文件
  104.                     IMapFrame boundryMapFrame = Shapes.AddBaseMap(baseMap[i]);  //加载基面图

  105.                     Doc.Shapes.SelectAll();
  106.                     Surfer.ISelection sel = Doc.Selection;
  107.                     sel.OverlayMaps();

  108.                     contourMapFrame.xMapPerPU = 127;           //设置比例
  109.                     contourMapFrame.yMapPerPU = 127;           //设置比例
  110.                     contourMapFrame.Axes.Item(4).ShowLabels = true; //显示标注
  111.                     contourMapFrame.Axes.Item(4).SetScale(LastMajorTick: maxiint, MajorInterval: 50);//设置标注最后值和间距
  112.                     contourMapFrame.Axes.Item(4).MinorTickType = SrfTickType.srfTickOut; ;//设置副刻度为out
  113.                     contourMapFrame.Axes.Item(4).MinorTicksPerMajor = 4;//设置副刻度个数4
  114.                     contourMapFrame.Axes.Item(3).SetScale(LastMajorTick: maxiint, MajorInterval: 50);//设置标注最后值和间距
  115.                     contourMapFrame.Axes.Item(3).MinorTickType = SrfTickType.srfTickOut;//设置副刻度为out
  116.                     contourMapFrame.Axes.Item(3).MinorTicksPerMajor = 4;//设置副刻度个数4

  117.                     contourMapFrame.Axes.Item(2).MajorTickType = SrfTickType.srfTickNone;//设置主刻度为none
  118.                     contourMapFrame.Axes.Item(2).Title = "标高/m";//设置定边轴标题
  119.                     contourMapFrame.Axes.Item(2).TitleFont.Size = 14;
  120.                     contourMapFrame.Axes.Item(2).TitleOffset1 = -3.4;//设置标题位置
  121.                     contourMapFrame.Axes.Item(2).TitleOffset2 = -0.3;
  122.                     contourMapFrame.Axes.Item(1).SetScale(LastMajorTick: maxidh, MajorInterval: 20);
  123.                     contourMapFrame.Axes.Item(1).Title = "测点号/m";//设置底边轴标题
  124.                     contourMapFrame.Axes.Item(1).TitleFont.Size = 14;
  125.                     contourMapFrame.Axes.Item(1).TitleOffset1 = -3.5;//设置标题位置
  126.                     contourMapFrame.Axes.Item(1).TitleOffset2 = -0.3;
  127.                     //1为底边轴,2为顶边轴,3为左边轴,4为右边轴;

  128.                     IContourMap contourMap = (IContourMap)contourMapFrame.Overlays.Item(1);
  129.                     contourMap.SmoothContours = SrfConSmoothType.srfConSmoothHigh;   //平滑等值线边界
  130.                     contourMap.FillContours = true;
  131.                     ILevels levels = contourMap.Levels;
  132.                     levels.LoadFile(levelFilePath);
  133.                     Surfer.IText Text1 = Doc.Shapes.AddText(contourMap.Left + 2, contourMap.Top + 0.5, strListFileName[i] + "" + "线视电阻率拟断面图");
  134.                     Text1.Font.Size = 14;

  135.                     Doc.SaveAs(listFileName[i] + ".srf");
  136.                     Doc.Close();
  137.                     surfer.Quit();

  138.                     System.GC.Collect(System.GC.GetGeneration(surfer));
  139.                 }
  140.                 catch
  141.                 {
  142.                     
  143.                 }
  144.                 finally
  145.                 {
  146.                     surfer.GridFilter(listFileName[i] + ".grd", Filter: SrfFilter.srfFilterGaussianLP, EdgeOp: SrfFilterEdge.srfFltEdgeReplicate, BlankOp: SrfFilterBlank.srfFltBlankLeave, OutGrid: listFileName[i] + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  147.                     //surfer.GridSplineSmooth(listFileName[i] + ".grd", nRow: 2, nCol: 2, Method: SrfSplineMethod.srfSplineInsert, OutGrid: textBox.Text + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  148.                     //surfer.GridBlank(InGrid: listFileName[i] + ".grd", BlankFile: blankFile[i], OutGrid: listFileName[i] + ".grd", OutFmt: Surfer.SrfGridFormat.srfGridFmtBinary);

  149.                     IPlotDocument Doc = (IPlotDocument)docs.Add(SrfDocTypes.srfDocPlot);    //创建一个空白绘图文档
  150.                     IShapes Shapes = Doc.Shapes;
  151.                     IMapFrame contourMapFrame = Shapes.AddContourMap(listFileName[i] + ".grd");    //加载网格文件
  152.                     //IMapFrame boundryMapFrame = Shapes.AddBaseMap(baseMap[i]);  //加载基面图

  153.                     //Doc.Shapes.SelectAll();
  154.                     //Surfer.ISelection sel = Doc.Selection;
  155.                     //sel.OverlayMaps();

  156.                     contourMapFrame.xMapPerPU = 127;           //设置比例
  157.                     contourMapFrame.yMapPerPU = 127;           //设置比例
  158.                     contourMapFrame.Axes.Item(4).ShowLabels = true; //显示标注
  159.                     contourMapFrame.Axes.Item(4).SetScale(LastMajorTick: maxiint, MajorInterval: 50);//设置标注最后值和间距
  160.                     contourMapFrame.Axes.Item(4).MinorTickType = SrfTickType.srfTickOut; ;//设置副刻度为out
  161.                     contourMapFrame.Axes.Item(4).MinorTicksPerMajor = 4;//设置副刻度个数4
  162.                     contourMapFrame.Axes.Item(3).SetScale(LastMajorTick: maxiint, MajorInterval: 50);//设置标注最后值和间距
  163.                     contourMapFrame.Axes.Item(3).MinorTickType = SrfTickType.srfTickOut;//设置副刻度为out
  164.                     contourMapFrame.Axes.Item(3).MinorTicksPerMajor = 4;//设置副刻度个数4

  165.                     contourMapFrame.Axes.Item(2).MajorTickType = SrfTickType.srfTickNone;//设置主刻度为none
  166.                     contourMapFrame.Axes.Item(2).Title = "标高/m";//设置定边轴标题
  167.                     contourMapFrame.Axes.Item(2).TitleFont.Size = 14;
  168.                     contourMapFrame.Axes.Item(2).TitleOffset1 = -3.4;//设置标题位置
  169.                     contourMapFrame.Axes.Item(2).TitleOffset2 = -0.3;
  170.                     contourMapFrame.Axes.Item(1).SetScale(LastMajorTick: maxidh, MajorInterval: 20);
  171.                     contourMapFrame.Axes.Item(1).Title = "测点号/m";//设置底边轴标题
  172.                     contourMapFrame.Axes.Item(1).TitleFont.Size = 14;
  173.                     contourMapFrame.Axes.Item(1).TitleOffset1 = -3.5;//设置标题位置
  174.                     contourMapFrame.Axes.Item(1).TitleOffset2 = -0.3;
  175.                     //1为底边轴,2为顶边轴,3为左边轴,4为右边轴;

  176.                     IContourMap contourMap = (IContourMap)contourMapFrame.Overlays.Item(1);
  177.                     contourMap.SmoothContours = SrfConSmoothType.srfConSmoothHigh;   //平滑等值线边界
  178.                     contourMap.FillContours = true;
  179.                     ILevels levels = contourMap.Levels;
  180.                     levels.LoadFile(levelFilePath);
  181.                     Surfer.IText Text1 = Doc.Shapes.AddText(contourMap.Left + 2, contourMap.Top + 0.5, strListFileName[i] + "" + "线视电阻率拟断面图");
  182.                     Text1.Font.Size = 14;

  183.                     Doc.SaveAs(listFileName[i] + ".srf");
  184.                     Doc.Close();
  185.                     surfer.Quit();

  186.                     System.GC.Collect(System.GC.GetGeneration(surfer));
  187.                 }

  188.                
  189.             }
  190.             
  191.             MessageBox.Show("OK!");
  192.         }

  193.         private void baihua_Click(object sender, RoutedEventArgs e)
  194.         {
  195.             for (int i = 0; i < listFile.LongCount(); i++)
  196.             {
  197.                 Surfer.Application surfer = new Surfer.Application();
  198.                 surfer.Visible = false;
  199.                 IDocuments docs = surfer.Documents;
  200.                 IWksDocument wks = (IWksDocument)docs.Open(listFile[i]); //打开dat文件
  201.                 wks.Activate();
  202.                 dynamic x = wks.Columns(2).Count; //统计一列的个数
  203.                 wks.Columns(1).Delete(); //删除第一列

  204.                 dynamic y = wks.Columns(2).Statistics().Maximum; //统计第二列的最大值
  205.                 dynamic firstValue = wks.Cells(1, 1).Value; //获取第一行第一列的值
  206.                 dynamic firstValueTwo = wks.Cells(1, 2).Value;
  207.                 dynamic lastValue = wks.Cells(x, 1).Value;
  208.                 wks.Cells(x + 1, 1).Value = lastValue; //设置第x+1行第一列的值
  209.                 wks.Cells(x + 1, 2).Value = y;
  210.                 wks.Cells(x + 2, 1).Value = firstValue;
  211.                 wks.Cells(x + 2, 2).Value = y;
  212.                 wks.Cells(x + 3, 1).Value = firstValue;
  213.                 wks.Cells(x + 3, 2).Value = firstValueTwo;
  214.                 wks.Rows(1).Insert();

  215.                 wks.Cells(1, 1).Value = x + 3;
  216.                 wks.Cells(1, 2).Value = 1;
  217.                 wks.SaveAs(listFileName[i] + ".bln"); //保存为bln文件

  218.                 surfer.Quit();
  219.                 System.GC.Collect(System.GC.GetGeneration(surfer));
  220.             }
  221.             
  222.             
  223.             
  224.             MessageBox.Show("OK!");
  225.         }

  226.         private void diban_Click(object sender, RoutedEventArgs e)
  227.         {
  228.             for (int i = 0; i < listFile.LongCount(); i++)
  229.             {
  230.                 Surfer.Application surfer = new Surfer.Application();
  231.                 surfer.Visible = false;
  232.                 IDocuments docs = surfer.Documents;
  233.                 IWksDocument wks = (IWksDocument)docs.Open(listFile[i]); //打开dat文件
  234.                 dynamic countX = wks.Rows(1).Count; //统计一列的个数
  235.                 if (countX==3)
  236.                 {
  237.                     wks.Columns(1).Delete(); //删除第一列
  238.                     dynamic fistx = wks.Columns(1).Count; //统计第一列的个数
  239.                     wks.Rows(1).Insert();

  240.                     wks.Cells(1, 1).Value = fistx;
  241.                     wks.Cells(1, 2).Value = 1;
  242.                     wks.SaveAs(listFileName[i] + ".bln"); //保存为bln文件
  243.                     surfer.Quit();
  244.                     System.GC.Collect(System.GC.GetGeneration(surfer));
  245.                 }
  246.                 else
  247.                 {
  248.                     dynamic x = wks.Columns(1).Count; //统计第一列的个数
  249.                     wks.Rows(1).Insert();

  250.                     wks.Cells(1, 1).Value = x;
  251.                     wks.Cells(1, 2).Value = 1;
  252.                     wks.SaveAs(listFileName[i] + ".bln"); //保存为bln文件
  253.                     surfer.Quit();
  254.                     System.GC.Collect(System.GC.GetGeneration(surfer));
  255.                 }
  256.                
  257.             }
  258.             
  259.             MessageBox.Show("OK!");
  260.         }

  261.         private void baihuawenjian_Click(object sender, RoutedEventArgs e)
  262.         {
  263.             OpenFileDialog ofdName2 = new OpenFileDialog();
  264.             ofdName2.Title = "选择文件";
  265.             ofdName2.Filter = "白化文件|*.bln|所有文件|*.*";
  266.             ofdName2.FileName = string.Empty;
  267.             ofdName2.RestoreDirectory = true;
  268.             ofdName2.DefaultExt = "bln";
  269.             ofdName2.Multiselect = true;
  270.             ofdName2.ShowDialog();
  271.             
  272.             blankFileName = ofdName2.FileNames;
  273.             for (int i = 0; i < blankFileName.Length; i++)
  274.             {
  275.                 blankFile.Add(blankFileName[i]);
  276.             }
  277.             
  278.         }

  279.         private void xzdb_Click(object sender, RoutedEventArgs e)
  280.         {
  281.             OpenFileDialog ofdName3 = new OpenFileDialog();
  282.             ofdName3.Title = "选择文件";
  283.             ofdName3.Filter = "底板文件|*.bln|所有文件|*.*";
  284.             ofdName3.FileName = string.Empty;
  285.             ofdName3.RestoreDirectory = true;
  286.             ofdName3.DefaultExt = "bln";
  287.             ofdName3.Multiselect = true;
  288.             ofdName3.ShowDialog();
  289.             
  290.             baseMapFileName = ofdName3.FileNames;
  291.             for (int i = 0; i < baseMapFileName.Length; i++)
  292.             {
  293.                 baseMap.Add(baseMapFileName[i]);
  294.             }
  295.             
  296.         }

  297.         private void levelFile_Click(object sender, RoutedEventArgs e)
  298.         {
  299.             OpenFileDialog ofdName4 = new OpenFileDialog();
  300.             ofdName4.Title = "选择填充文件";
  301.             ofdName4.Filter = "填充文件|*.lvl|所有文件|*.*";
  302.             ofdName4.FileName = string.Empty;
  303.             ofdName4.RestoreDirectory = true;
  304.             ofdName4.DefaultExt = "lvl";
  305.             ofdName4.Multiselect = true;
  306.             ofdName4.ShowDialog();
  307.             try
  308.             {
  309.                 levelFilePath = ofdName4.FileName;
  310.             }
  311.             catch (Exception)
  312.             {
  313.                
  314.                 MessageBox.Show("请选择lvl文件");
  315.             }
  316.         }
  317.     }
  318. }
复制代码
  1. <Window x:Class="surfer.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.         xmlns:local="clr-namespace:surfer"
  7.         mc:Ignorable="d"
  8.        Title="辅助工具" Height="400" Width="210">
  9.     <StackPanel HorizontalAlignment="Center">
  10.         <Grid VerticalAlignment="Top" Background="Azure" >
  11.             <Grid.RowDefinitions>
  12.                 <RowDefinition Height="40"/>
  13.                 <RowDefinition Height="40"/>

  14.             </Grid.RowDefinitions>

  15.             <Grid.ColumnDefinitions>
  16.                 <ColumnDefinition Width="50"/>
  17.                 <ColumnDefinition Width="50"/>
  18.                 <ColumnDefinition Width="50"/>
  19.                 <ColumnDefinition Width="50"/>

  20.             </Grid.ColumnDefinitions>
  21.             <TextBlock x:Name="textBlock2" HorizontalAlignment="Stretch" VerticalAlignment="Center" Grid.Row="0" Grid.Column="2" TextWrapping="Wrap" Text="Y最小值"  RenderTransformOrigin="1.659,0.879"/>
  22.             <TextBox x:Name="yMinBox" HorizontalAlignment="Stretch" Grid.Row="0" Grid.Column="3" TextWrapping="Wrap" Text="" />
  23.             <TextBlock x:Name="textBlock4" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0"  TextWrapping="Wrap" Text="X间距"  RenderTransformOrigin="0.562,1.111" Margin="8,10,10,14"/>
  24.             <TextBox x:Name="NumCols" HorizontalAlignment="Stretch" Grid.Row="0" Grid.Column="1" TextWrapping="Wrap" Text=""/>
  25.             <TextBlock x:Name="textBlock5" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" TextWrapping="Wrap" Text="Y间距" />
  26.             <TextBox x:Name="NumRows" HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="1" TextWrapping="Wrap" Text="" RenderTransformOrigin="1.08,-0.478"/>
  27.             <TextBlock x:Name="textBlock7" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2" TextWrapping="Wrap" Text="滤波Z" />
  28.             <TextBox x:Name="Filter" HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="3" TextWrapping="Wrap" Text="" RenderTransformOrigin="-0.4,-0.913"/>
  29.         </Grid>
  30.         <Grid>
  31.             <Grid.RowDefinitions>
  32.                 <RowDefinition Height="40"/>
  33.                 <RowDefinition Height="40"/>
  34.                 <RowDefinition Height="40"/>
  35.                 <RowDefinition Height="40"/>
  36.                 <RowDefinition Height="40"/>
  37.                 <RowDefinition Height="40"/>
  38.                 <RowDefinition Height="40"/>
  39.             </Grid.RowDefinitions>
  40.             <Button x:Name="button" Content="选择文件" Background="Cyan" Click="button_Click" HorizontalAlignment="Stretch" Grid.Row="0"/>
  41.             <Button x:Name="xzdb" Content="选择底板" Background="Salmon" Grid.Row="2" Click="xzdb_Click" />
  42.             <Button x:Name="baihuawenjian" Content="白化文件" Background="WhiteSmoke"  HorizontalAlignment="Stretch" Click="baihuawenjian_Click" Grid.Row="1" />
  43.             <Button x:Name="levelFile" Content="选择填充文件" Background="Gray" HorizontalAlignment="Stretch" Grid.Row="3" Click="levelFile_Click"/>
  44.             <Button x:Name="grid" Content="生成srf" Background="SeaShell" Grid.Row="4" HorizontalAlignment="Stretch" Click="button1_Click"/>
  45.             <Button x:Name="blank" Content="地表" Background="GreenYellow" Grid.Row="5"  HorizontalAlignment="Stretch"  Click="baihua_Click"/>
  46.             <Button x:Name="diban" Content="底板" Background="Gray" Grid.Row="6" HorizontalAlignment="Stretch" Click="diban_Click"/>
  47.         </Grid>
  48.     </StackPanel>
  49. </Window>
复制代码
请注意本程序为WPF程序。
捕获.PNG

深入浅出WPF完整版.pdf

43.64 MB, 下载次数: 61, 下载积分: 金钱 -5

csharp-language-specification-5.0.doc

2.72 MB, 下载次数: 12, 下载积分: 金钱 -5

c#规范5.0

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-23 16:58:18 | 显示全部楼层
http://pan.baidu.com/s/1slSwuT3
附上更牛的学习资粮VB VB.net c#
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-24 11:53:33 | 显示全部楼层
{:eb502:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-6-7 11:53:16 | 显示全部楼层
{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2024-4-13 15:03:17 | 显示全部楼层
草率了,附件就是两个C#的word文本及pdf教材,和surfer没有一毛的关系,(#^.^#)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表