我有兩個單獨的檔案,Form1.cs 和 Program.cs。我希望 Program.cs 在我通過按 button1 并選擇檔案目標在我的表單中選擇檔案路徑后開始運行,但是它只有在我關閉表單后才開始運行。當表單仍然打開時,我無法運行我的 program.cs,但是我想在我從 program.cs 獲得的表單上顯示資訊。這就是我的表單代碼的樣子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Diagnostics;
namespace test
{
public partial class Form1 : Form
{
public string Pathh;
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog
{
InitialDirectory = @"D:\",
Title = "Browse Text Files",
CheckFileExists = true,
CheckPathExists = true,
DefaultExt = "csv",
Filter = "csv files (*.csv)|*.csv",
FilterIndex = 2,
RestoreDirectory = true,
ReadOnlyChecked = true,
ShowReadOnly = true
};
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
}
}
}
}
這是我在 Program.cs 中的主要內容:
namespace test
{
class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Form1 form = new Form1();
form.ShowDialog();
if (form.checkBox1.Checked)
{
Console.Write("LOL");
Dictionary<string, string> LocatieProduct = new Dictionary<string, string>();
Dictionary<string, int> PickCountSchap = new Dictionary<string, int>();
/*for (int i = 0; i <= 17; i )
{
StringBuilder sb = new StringBuilder();
if (i < 10)
sb.Append("D0" i);
else
sb.Append("D" i);
string final = sb.ToString();
Console.WriteLine(final);
PickCountGang[final] = 1;
}
*/
Dictionary<string, int> PickCount = new Dictionary<string, int>();
string path = form.textBox1.Text;
var textBoxes = new List<Control>();
foreach (Control c in form.Controls)
{
if (c is TextBox)
{
textBoxes.Add(c);
}
}
using (var reader = new StreamReader(@path))
{
int count = 0;
while (!reader.EndOfStream)
{
count ;
var line = reader.ReadLine().Split(';');
string TypeOmschrijving = line[11]; //Pick/Bulk
string Locatie = line[20]; //DXXXXXXXXX (locatie in mag)
string Omschrijving = line[15]; //welk product
string Soort = line[9]; //DROOG of VRIES of KOEL
if (Soort == "DROOG" && TypeOmschrijving != null && TypeOmschrijving != "Bulk" && Locatie != "retd" && Locatie != "" && Locatie != "RET.LEV.D")
{
//Console.Write(Soort " " TypeOmschrijving " " Omschrijving " " Locatie "\t");
string ParsedLocatie = LocatieParser(Locatie);
bool test1 = LocatieProduct.TryGetValue(ParsedLocatie, out string value2);
if (test1 == false)
{ LocatieProduct.Add(ParsedLocatie, Omschrijving); }
bool test2 = PickCount.TryGetValue(Locatie, out int value);
if (test2 == false)
{ PickCount.Add(Locatie, 1); }
else PickCount[Locatie] ;
}
}
foreach (var element in PickCount) //per schap
{
string trimmedResult = LocatieParser(element.Key);
//Console.Write('"' trimmedResult '"' ", ");
bool test2 = PickCountSchap.TryGetValue(trimmedResult, out int value);
if (test2 == false)
{ PickCountSchap.Add(trimmedResult, element.Value); }
else PickCountSchap[trimmedResult] = element.Value;
}
foreach (var element in PickCountSchap) //per schap
{
// Console.WriteLine(element.Key " " element.Value);
string result = "";
int i = 0;
char[] key = element.Key.ToCharArray();
foreach (char c in key)
{
if (i == 2)
{ result = result "."; }
result = result c;
i ;
}
// Console.WriteLine(element.Value);
}
foreach (var element in LocatieProduct) //per schap
{
// Console.WriteLine(element.Key " " element.Value);
}
var Array = MagazijnCreator(PickCountSchap, LocatieProduct);
for (int y = 0; y < 70; y )
{
Console.WriteLine();
for (int x = 0; x < 24; x )
{
bool test2 = PickCountSchap.TryGetValue(Array[y, x].Locatie, out int value);
if (test2 == false)
{ PickCountSchap.Add(Array[y, x].Locatie, 0); }
else if (Array[y, x].Locatie == "08.38")
{
bool Test3 = PickCountSchap.TryGetValue("17.1", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.38"] test;
}
else if (Array[y, x].Locatie == "08.40")
{
bool Test3 = PickCountSchap.TryGetValue("17.2", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.40"] test;
}
else if (Array[y, x].Locatie == "08.42")
{
bool Test3 = PickCountSchap.TryGetValue("17.3", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.42"] test;
}
else if (Array[y, x].Locatie == "08.44")
{
bool Test3 = PickCountSchap.TryGetValue("17.44", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.44"] test;
}
else if (Array[y, x].Locatie == "08.46")
{
bool Test3 = PickCountSchap.TryGetValue("17.5", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.46"] test;
}
else if (Array[y, x].Locatie == "08.43")
{
bool Test3 = PickCountSchap.TryGetValue("17.7", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.43"] test;
}
else if (Array[y, x].Locatie == "08.45")
{
bool Test3 = PickCountSchap.TryGetValue("17.6", out int test);
if (Test3)
Array[y, x].PickCount = PickCountSchap["08.45"] test;
}
else Array[y, x].PickCount = PickCountSchap[Array[y, x].Locatie];
string Count = (Array[y, x].PickCount " ");
if (Count.Length < 5)
{
while (Count.Length < 4)
{
Count = ' ';
}
}
Console.Write(Count);
}
}
int it = 1;
foreach (var obj in Array)
{
if (obj.Locatie != "PAD ")
{ textBoxes[it].Text = obj.Locatie; }
}
Console.ReadLine();
}
}
}
任何幫助將不勝感激!
uj5u.com熱心網友回復:
為了讓表單處于活動狀態并同時運行其他代碼,您可以使用執行緒。添加到您的代碼中,using system.threading
將您想要在表單后面運行的代碼包裝在一個新執行緒中,
var t = new thread(()=>{ //CODE })
然后啟動新執行緒。
t.start();
如果您想在另一個執行緒中更改表單中的某些內容,您將需要像這樣使用方法呼叫程式
this.invoke((methodInvoker)(()=>{ this.background.color = colors.red; }))
PS:您可能希望將您的應用程式更改為 windows 表單應用程式并從主 winform 運行所有內容。欲了解更多資訊,請點擊此處
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/379706.html
上一篇:System.InvalidOperationException:“聲音API僅支持播放PCM波形檔案。”
下一篇:Datagridview行高問題
