ich habe ein Problem mit der ich sag jetzt mal Versuch an "OO"-Programmierung.
Ich möchte das in der Main-Form beim laden sogesehen die Laufwerke initialisiert werden und in eine Klasse gepackt werden, jedoch tut er dies nicht so wie ich es möchte. Er gibt keine Klasse aus die ich erstelle, noch sonst irgendwie. Wenn ich es nur via DriveInfo versuche klappt das ohne Probleme.
Vielleicht kann mir ja jemand von euch helfen.
Hier ist der Code den ich dafür verwende:
Main-Form
Code:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace FileInitializer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Drive.getDrives();
int y = 12;
foreach(Drive drive in Drive._driveLst)
{
Button btn = new Button();
btn.Text = drive.Label + " (" + drive.Name + ")";
btn.AutoSize = true;
btn.Location = new Point(5, y);
y = y + btn.Height;
tabPage3.Controls.Add(btn);
}
}
}
}
Code:
using System.Collections.Generic;
using System.IO;
using System.Management;
namespace FileInitializer
{
public class Drive
{
public string Name;
public string Label;
public double TotalSize;
public string TotalSizeStr;
public double FreeSize;
public string FreeSizeStr;
public string SN;
private static List<Drive> driveLst;
public static List<Drive> _driveLst
{
get { return driveLst; }
set { driveLst = value; }
}
public static void getDrives()
{
driveLst = new List<Drive>();
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
if (drive.IsReady)
{
createDrive(drive.Name,
drive.VolumeLabel,
Check.systemSize(drive.TotalSize),
Check.sizeName(drive.TotalSize),
Check.systemSize((drive.TotalSize - drive.TotalFreeSpace)),
Check.sizeName((drive.TotalSize - drive.TotalFreeSpace)),
getHDDSN(drive.Name));
}
}
}
private static void createDrive(string name, string label, double tsize, string tsizestr, double fsize, string fsizestr, string sn)
{
Drive d = new Drive();
d.Name = name;
d.Label = label;
d.TotalSize = tsize;
d.TotalSizeStr = tsizestr;
d.FreeSize = fsize;
d.FreeSizeStr = fsizestr;
d.SN = sn;
driveLst.Add(d);
}
public static string getHDDSN(string drive)
{
if (drive == "" || drive == null)
drive = "C";
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}
}
}






