Практикум прикладного программирования на C# в среде VS.NET 2008 - ответы
Количество вопросов - 435
this.FontFamily = new FontFamily("Arial"); this.FontSize = 1.3333 * 36; // 36pt this.FontWeight = FontWeights.Bold; this.Background = Brushes.Red; this.Foreground = Brushes.Yellow; this.Padding = new Thickness(5, 0, 5, 0);демонстрирует:
namespace WpfControlLibrary{ public partial class Clock : UserControl { public Clock() { InitializeComponent();демонстрирует:
clock = this.Resources["clock"] as DigitalClock; } DigitalClock clock; // Ссылка на экземпляр из ресурсовдемонстрирует:
private void DigitalClock_StopDigitalClock(object sender, EventArgs e) { this.RaiseEvent(new RoutedEventArgs(Clock.StopClockEvent)); }демонстрирует:
Imports SystemImports System.IOModule VBDemoSub Main()Dim FileName As String = "c:\temp\mytext01.txt"Dim Writer As StreamWriterDim MyFile As New FileInfo(FileName)Writer = MyFile.CreateText()Writer.WriteLine("Created by"&MyFile.GetType.ToString)Writer.WriteLine("Written by"&Writer.ToString)Writer.Close()End Subдемонстрирует:
private void button1_Click(object sender, System.EventArgs e){ manualresetevent=new ManualResetEvent(false); Thread thread1 = new Thread(new ThreadStart(AsynchronProcess1)); //Процесс 1 стартует первым thread1.Start(); Thread thread2 = new Thread(new ThreadStart(AsynchronProcess2)); thread2.Start();Функция AsynchronProcess1показывает, что:
private void button1_Click(object sender, System.EventArgs e){ //Файл создан заранее его объем должен быть достаточно большимstring path = "C:\a.txt"; FileInfo fileinfo=new FileInfo(path); using(FileStream fileStream = fileinfo.OpenRead()) { fileStream.Seek(0, SeekOrigin.Begin); byte[] bArray=new byte[10]; int iBytes=fileStream.Read(bArray,0,10); if(iBytes == 10) { for(int i=0; i < iBytes; i++) textBox1.Text+= bArray[i]; }}Результат:
using System; using System.IO; using System.IO.Compression; namespace Recipe05_23 { class Recipe05_23 { static void Main(string[] args) { GZipStream zipout = new GZipStream( File.OpenWrite("compressed_data.gzip"), CompressionMode.Compress); StreamWriter writer = new StreamWriter(zipout); writer.WriteLine("the quick brown fox"); writer.Close(); GZipStream zipin = new GZipStream( File.OpenRead("compressed_data.gzip"), CompressionMode.Decompress); StreamReader reader = new StreamReader(zipin); a line from the stream and print it out. Console.WriteLine(reader.ReadLine()); Console.WriteLine(Environment.NewLine); Console.WriteLine("Main method complete. Press Enter."); Console.ReadLine(); } } }демонстрирует пример:
Imports System Imports System.IO Imports System.Security.Cryptography Module VBDemo Sub Main() Dim Bytes() As Byte = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74} Dim EncBytes() As Byte = New Byte(15) {} Dim DecBytes() As Byte = New Byte(10) {} Dim FileName As String = "c:\temp\text.enc" Dim EncFile As New FileStream(FileName, FileMode.Create, _ FileAccess.Write) Dim DES As New DESCryptoServiceProvider() Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor() Dim CryptoStreamEnc As New CryptoStream(EncFile, DESEncrypt, _ CryptoStreamMode.Write) Console.WriteLine("Original Data") ToHexArray(Bytes) CryptoStreamEnc.Write(Bytes, 0, Bytes.Length) CryptoStreamEnc.Close() EncFile.Close() EncFile = New FileStream(FileName, FileMode.Open, FileAccess.Read) EncFile.Read(EncBytes, 0, EncFile.Length) EncFile.Close() Console.WriteLine("Encrypted Data") ToHexArray(EncBytes) Console.WriteLine() Dim DecFile As New FileStream(FileName, FileMode.Open, _ FileAccess.Read) Dim DESDecrypt As ICryptoTransform = DES.CreateDecryptor() Dim CryptoStreamDec As New CryptoStream(DecFile, DESDecrypt, _ CryptoStreamMode.Read) Dim Reader As New BinaryReader(CryptoStreamDec) Console.WriteLine("Decrypted Data") DecBytes = Reader.ReadBytes(10) ToHexArray(DecBytes) End Sub Sub ToHexArray(ByVal A As Byte()) Dim I As Integer For I = 0 To A.GetUpperBound(0) Console.Write("0x{0:x2} ", A(I)) If I = 7 Then Console.WriteLine() End If Next End Sub End Moduleпоказано:
Imports SystemImports System.IOModule VBDemoSub Main() Dim Bytes As Byte() Dim Reader As BinaryReader Dim Writer As BinaryWriter Reader = New BinaryReader(File.OpenRead (“c:\demo.exe”)) Writer = New BinaryWriter(File.Create (“c:\demo_copy.exe”)) While Reader.PeekChar() > -1 Bytes = Reader.ReadBytes(1024) Writer.Write(Bytes) End While Reader.Close() Writer.Flush() Writer.Close()End SubEnd Moduleдемонстрирует:
using System.Runtime.Serialization;...[Serializable]public class OrderEntity : ISerializable{ void ISerializable.GetObjectData(SerializationInfo info, StreamingContextctxt) { info.AddValue("OrderID", orderID); }deserialization public OrderEntity(SerializationInfo info, StreamingContext ctxt) { orderID = (int)info.GetValue("OrderID", typeof(int)); }}демонстрирует пример:
int minutes, seconds, time; public TextBlock Time { get { minutes = time / 60; seconds = time % 60; this.Text = String.Format("{0:00}:{1:D2}", minutes, seconds); if (time > 0) time -= 1; return this; } }демонстрирует:
time = COUNT_TIME * 60; // Секунды } public void Start() { timer.Stop(); timer.Start(); } public void Restart() { time = COUNT_TIME * 60; // Секунды timer.Stop(); timer.Start(); } public void StopResult() { timer.Stop(); if (StopDigitalClock != null) StopDigitalClock(this, EventArgs.Empty); } public void Stop() { timer.Stop(); }демонстрирует:
public void Start(){ clock.Start();}public void Restart(){ clock.Restart();}public void StopResult(){ clock.StopResult();}public void Stop(){ clock.Stop();}демонстрирует:
Пример кода: { bArray[i]=(byte)numrandom.Next(48,57); textBox1.Text+=bArray[i];} fileStream.Write(bArray,0,10);демонстрирует:
private void button1_Click(object sender, System.EventArgs e){//Файл создан заранее, его объем должен быть достаточно большим string path = "C:\a.txt"; using(FileStream fileStream = new FileStream(path, FileMode.Open)) { fileStream.Seek(1, SeekOrigin.Begin); for (int i=0;i<fileStream.Length;i++) textBox1.Text=fileStream.ReadByte()+" "; }Результат в TextBox:
using System.Runtime.Serialization.Formatters.Binary;...BinaryFormatter formatter = new BinaryFormatter();"MyBinaryOrderEntity.dat"FileStream stream = File.Create("MyBinaryOrderEntity.dat");formatter.Serialize(stream, order);stream.Close();демонстрирует:
Imports SystemImports System.IOModule VBDemoSub Main() Dim FileName As String = _ “C:\Program Files\Microsoft.NET\FrameworkSDK\include\corsym.h” Dim Reader As TextReader Dim I As Int32 Reader = New StreamReader(FileName) While Reader.Peek() > -1 Console.WriteLine(Reader.ReadLine) I += 1 End While Console.WriteLine(“Read {0:G} lines”, I) Reader.Close()End SubEnd Moduleпоказано:
StopClockEvent = EventManager.RegisterRoutedEvent( "StopClock", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Clock));демонстрирует:
public event RoutedEventHandler StopClock { add { AddHandler(StopClockEvent, value); } remove { RemoveHandler(StopClockEvent, value); } }демонстрирует:
FileStream sourceFile = File.OpenRead(@"C:\zip.xml"); FileStream destFile = File.Create(@"C:\zip.zip"); GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress); try { int value = sourceFile.ReadByte(); while (value!= -1) { compStream.WriteByte((byte)value); value = sourceFile.ReadByte(); } } finally { compStream.Dispose(); }демонстрирует
Imports SystemImports System.IOModule VBDemoSub Main()Dim Path As String = "c:\"Dim DirInfo As New DirectoryInfo(Path)Dim Dirs() As DirectoryInfoDim I As IntegerConsole.WriteLine("Initial Directory:"&DirInfo.FullName);Dirs=DirInfo.GetDirectoriesFor I=0 To Dirs.GetUpperBound(0)Console.WriteLine(Dirs(I).FullName)NextEnd SubEnd Moduleдемонстрирует:
{ void timer_Tick(object sender, EventArgs e) if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Time")); if (minutes <= 0 && seconds <= 0) { timer.Stop(); if (StopDigitalClock != null) StopDigitalClock(this, EventArgs.Empty); } }демонстрирует:
Imports SystemImports System.IOModule VBDemoSub Main()Dim Path As String = GetPersonalFolder()&"\MyText"Dim DirInfo As New DirectoryInfo(Path)Dim Parent As StringConsole.WriteLine("Initial Directory : "&DirInfo.FullName)Parent = DirInfo.Parent.FullNameWhile Parent DirInfo.Root.FullNameConsole.WriteLine("Parent Directory : " & _DirInfo.Parent.FullName)Parent = DirInfo.Parent.FullNameDirInfo = New DirectoryInfo(Parent)End WhileEnd SubFunction GetPersonalFolder() As StringDim E As EnvironmentReturn E.GetFolderPath(Environment.SpecialFolder.Personal)End FunctionEnd Moduleдемонстрирует:
Imports SystemImports System.IOModule VBDemoSub Main() Dim Bytes As Byte() Dim I As Integer Dim Reader As BinaryReader Reader = New BinaryReader(File.OpenRead (“c:\demo.exe”)) While Reader.PeekChar() > -1 Bytes = Reader.ReadBytes(16) For I = 0 To Bytes.GetUpperBound(0) Console.Write(“0x{0:X2}|”, Bytes(I)) Next Console.WriteLine() End WhileEnd SubEnd Moduleпоказывает:
private void button1_Click(object sender, System.EventArgs e){ StringBuilder sbText= new StringBuilder("Дом, который построит Джек"); StringBuilder sbText1= new StringBuilder("Пшеница, которая в темном чулане хранилась"); StringBuilder sbText2= new StringBuilder("Кот, который пугал синицу"); StringWriter stringwriter = new StringWriter(); sbText=sbText.Replace("построит","построил"); sbText1=sbText1.Replace("хранилась","хранится"); sbText2=sbText2.Replace("пугал","пугает"); stringwriter.Write(sbText); stringwriter.Write(stringwriter.NewLine); stringwriter.Write(sbText1); stringwriter.GetStringBuilder().Insert(sbText.Length+1,sbText2); string path = @"C:\a.txt";using(TextWriter streamWriter = new StreamWriter(path,true,System.Text.Encoding.Default)) { streamWriter.Write(stringwriter); } stringwriter.Close(); using(TextReader streamreader = new StreamReader(path,System.Text.Encoding.Default)) { StringReader stringreader = new StringReader(streamreader.ReadToEnd()); textBox1.Text+=stringreader.ReadLine()+"\r\n"; textBox1.Text+=stringreader.ReadLine()+"\r\n"; sbText=new StringBuilder(stringreader.ReadLine()); sbText=sbText.Replace("Кот", "Пес",0,5); textBox1.Text+=sbText; stringreader.Close(); }}Результатом выполнения будет:
timer = new DispatcherTimer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = TimeSpan.FromSeconds(1);демонстрирует:
<OrderID>10248</OrderID> <CustomerID>VINET</CustomerID> <OrderDate>1996-07-04T00:00:00.0000000+01:00</OrderDate> <OrderDetails> ... see below ... </OrderDetails> <ShippedDate>1996-07-16T00:00:00.0000000+01:00</ShippedDate></OrderEntity>иллюстрирует следующие правила XML-сериализации:
private void button1_Click(object sender, System.EventArgs e){//Файл создан заранее его объем должен быть достаточно большим string path = "C:\a.txt";FileInfo fileinfo=new FileInfo(path); using(FileStream fileStream = fileinfo.OpenWrite()) { fileStream.Seek(0, SeekOrigin.Begin); byte[] bArray=new byte[10]; Random numrandom = new Random(); for(int i=0; i <bArray.Length; i++) { //Записываем случайные числа в массив bArray[i]=(byte)numrandom.Next(48,57); fileStream.WriteByte(bArray[i]); textBox1.Text+=bArray[i]; } }}полный результат выполнения кода:
using System;using System.Text;using System.Net;using System.Net.Sockets;class SocketServer{public static void Main(){StreamWriter streamWriter;StreamReader streamReader;NetworkStream networkStream;TcpListener tcpListener = new TcpListener(5555);tcpListener.Start();Console.WriteLine("The Server has started on port 5555");Socket serverSocket = tcpListener.AcceptSocket();try{if (serverSocket.Connected){while (true){Console.WriteLine("Client connected");networkStream = new NetworkStream(serverSocket);streamWriter = new StreamWriter(networkStream);streamReader = new StreamReader(networkStream);Console.WriteLine(streamReader.ReadLine());}}if (serverSocket.Connected)serverSocket.Close();Console.Read();}catch (SocketException ex){Console.WriteLine(ex);}}}демонстрирует, что: