我試圖讓這個程式作為一個詞匯表作業,你應該能夠用兩種語言添加你的單詞。當您對添加的單詞數量感到滿意時,您可以按下一個按鈕,然后您可以在這些單詞上測驗自己。
在這樣做的程序中,我最終制作了一個自定義類,其中包含兩種語言中的單詞以及它之前是否曾在單詞測驗中使用過。現在我停下來嘗試用串列中的類中的單詞填充文本框,但我不知道如何獲取資料。
我已經嘗試了很多東西,但作為一個新手,我只是越挖越深,我就是無法起床......
namespace Uppgift_13._1__Glosprogramet_
{
public partial class Glosprogram : Form
{
List<glosa> glosLista = new List<glosa>();
Random slump = new Random();
glosa glosor = new glosa("", "", false);
int valAvSpr?k; //Choice of language
int valAvGlosa; //Choice of glossary
string valAvOrd; //Choice of word (glossary and then what language (which word of that glossary))
public Glosprogram()
{
InitializeComponent();
}
private void btnL?ggTillGlosa_Click(object sender, EventArgs e)
{
/*H?r l?ggs ett objekt in i listan enligt en klass jag skapat som
inneh?ller det svenska ordet, den engelska ?vers?ttningen och ifall den an?nts i glostestet.*/
glosLista.Add( (new glosa(tbxSvensktOrd.Text, tbxEngelsktOrd.Text, false) ) );
btnStartaGlostest.Enabled = true;
}
private void btnStartaGlostest_Click(object sender, EventArgs e)
{
/*K?nner vi oss klara med m?ngden inlagda glosor s? kan vi d? klicka p? starta glostest
f?r att testa oss p? glosorna. D? l?ses f?nstret f?r att l?gga till nya glosor och
ett svenskt eller engelskt ord dyker upp i en av rutorna som man sedan f?r svara p?
i den andra rutan och ocks? det andra spr?ket d?.*/
gbxL?ggTillGlosor.Enabled = false;
gbxGlostest.Enabled = true;
// 0=Svenska rutan, 1=Engelska rutan
valAvSpr?k = slump.Next(0, 2);
valAvGlosa = slump.Next(0, glosLista.Count 1);
//THIS IS WHERE I AM HAVING MY PROBLEMS... CAN'T QUITE FIGURE IT OUT.
if(valAvSpr?k == 1) //So if english is the language of choice, it should fill that textbox with the random
{ //glossary in english and then lock it and let the user answer in Swedish. The rest is comparing the answer to the varibale in the class, within the list, again.. Am lost...
tbxEngelsktOrdGlostest.Text = "" glosLista.;
tbxEngelsktOrdGlostest.ReadOnly = true;
}
else
{
}
}
private void btnSvara_Click(object sender, EventArgs e)
{
glosLista.Insert(valAvGlosa, new glosa(glosor.svenskGlosa, glosor.engelskGlosa, true));
tbxEngelsktOrdGlostest.Clear();
tbxSvensktOrdGlostest.Clear();
tbxResultat.AppendText("" "\r\n");
}
private void btnNyaGlosor_Click(object sender, EventArgs e)
{
//T?mma listan p? glosor, svenska och engelska, rensa resultatlistan.
gbxL?ggTillGlosor.Enabled = true;
gbxGlostest.Enabled = false;
}
}
}
And then my class that I created for thisnamespace Uppgift_13._1__Glosprogramet_
{
class glosa
{
private string privatSvenskGlosa; //Swedish translation of word
private string privatEngelskGlosa; //English translation of word
private bool privatAnv?ntGlostest = false; //Is used in word-test
public glosa(string msvenskGlosa, string mengelskGlosa, bool manv?ntGlostest)
{
this.svenskGlosa = msvenskGlosa;
this.engelskGlosa = mengelskGlosa;
this.anv?ntGlostest = manv?ntGlostest;
}
public string svenskGlosa
{
get
{
return privatSvenskGlosa;
}
set
{
privatSvenskGlosa = value.ToLower();
}
}
/*Samtidigt g?r klassen om alla inmatningar till att enbart vara skrivet i sm? bokst?ver
f?r att underl?tta att hitta i indexet senare samt inte f? fel f?r att man skrivit
med stor bokstav i b?rjan en g?ng och sedan skriver med liten bokstav en annan.*/
public string engelskGlosa
{
get
{
return privatEngelskGlosa;
}
set
{
privatEngelskGlosa = value.ToLower();
}
}
public bool anv?ntGlostest
{
get
{
return privatAnv?ntGlostest;
}
set
{
privatAnv?ntGlostest = value;
}
}
}
}

uj5u.com熱心網友回復:
似乎您想從串列中選擇一個隨機專案
你需要
// pick the element from the list
var glosEnt = glosLista[valAvGlosa];
if(valAvSpr?k == 1)
{
tbxEngelsktOrdGlostest.Text = glosEnt.engelskGlosa;
tbxEngelsktOrdGlostest.ReadOnly = true;
}
uj5u.com熱心網友回復:
我將僅回答標題的問題“如何在串列中從具有多個變數的類中提取變數?” (我不喜歡閱讀非英文代碼)。
假設您有一個串列:
var list = new List<MyClass>
{
new MyClass { PropertyA = “A”, PropertyB = “B” },
new MyClass { PropertyA = “1”, PropertyB = “2” }
}
首先找到您需要的(類的)實體:
var obj = list.FirstOrDefault(x => x.PropertyA == “1”);
然后獲取一個成員的值:
if (obj != null)
{
var myVariable = obj.PropertyB;
}
如果您確定您的搜索會找到該物件,那么您可以使用First而不是FirstOrDefault(兩者都來自命名空間System.Linq)并跳過空檢查。
如果你需要一個隨機元素:
var random = new Random(); // random number generator
var randomElement = list[random.Next(list.Count)];
注意事項System.Random:
最好創建一個Random類的實體并重用它,而不是使用一次并為每個亂數創建一個新實體,因為如果您實體化Random該類,它的第一個值(以及接下來出現的一系列數字)取決于當前DateTime(在 .NET Framework 中)并且如果在非常短的時間跨度內實體化,這些實體可能會給出相同的“隨機”值。更多資訊:https ://docs.microsoft.com/en-us/dotnet/api/system.random?view=net-6.0#instantiating-the-random-number-generator
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456216.html
下一篇:C#更改URL時復制
