|
You could, I suppose, implement a static method in the Form class that would check if the correct conditions exist, and then create (and display) the form, but you would still have to call this method from any place where the form should be displayed.
If the conditions could be encapsulated in an event, perhaps it would be possible to create an event handler that would create the form. It all depends on what you are trying to achieve. However, unless the conditions for showing the form are identical in all locations, I see no advantage to using either of these techniques.
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|
|
Add a static method to the Form which checks the conditions, and if they are all fine, creates the instance and displays it. Then all you have to do is call the static method.
So if your condition was for example "number of elements greater than five"
public static Form1 CreateIfNeeded(int count)
{
if (count > 5)
{
Form1 f = new Form1();
f.Show();
return f;
}
return null;
} And call it:
Form1 f = Form1.CreateIfNeeded(MyList.Count);
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
You do not understand my question, I'm asking condition to Open form outside Form and condition to open form inside Form ?
|
|
|
|
|
I am trying to make game that you have 12 random letters and with them you should make longest possible word that exist in ditionary.I want to loop through all labels and every time button is clicked each label separatly stops generating letters,when 12 label stops generating letters timer should stop.How to give same name for all labels?
|
|
|
|
|
It is unclear what do you mean by 'same name' and what do you want to achieve with that 'same name'... Please try to explain with more details, possibly with some code sample...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
I want every time I press button to stop generating letters in each label separatly and when last 12 label stops generating letters timer should stop.
Here is code in VB 6 that does this,in VB 6 all labels have name property lblSlovo
Private Sub lblStartStop_Click()
If Not lblStartStop.Enabled Then Exit Sub
If lblStartStop.Caption = "Start" Then
i = 0
Timor.Enabled = True
lblStartStop.Caption = "Stop"
lblStartStop.Enabled = True
Else
lblSlovo(i).Caption = slova(i)
i = i + 1
If i = 12 Then
txtInput.Enabled = True
lblStartStop.Enabled = False
lblStartStop.Caption = "Start"
Timor.Enabled = False
Vreme.Enabled = True
txtInput.SetFocus
End If
End If
End Sub
I want to convert this in C# ???
|
|
|
|
|
Just to make it readable...
Private Sub lblStartStop_Click()
If Not lblStartStop.Enabled Then Exit Sub
If lblStartStop.Caption = "Start" Then
i = 0
Timor.Enabled = True
lblStartStop.Caption = "Stop"
lblStartStop.Enabled = True
Else
lblSlovo(i).Caption = slova(i)
i = i + 1
If i = 12 Then
txtInput.Enabled = True
lblStartStop.Enabled = False
lblStartStop.Caption = "Start"
Timor.Enabled = False
Vreme.Enabled = True
txtInput.SetFocus
End If
End If
End Sub
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
How to convert this code in c# ? I cannot give same name property to all labels!!!
modified 27-Nov-16 10:01am.
|
|
|
|
|
Create an array (or a List) of Labels, and add the instances to that:
private List<Label> labels = new List<Label();
private int currentLabel = 0;
...
labels.Add(myLabel1);
labels.Add(myLabel2);
labels.Add(myLabel3);
labels.Add(myLabel4);
... Then in your click handler get the current label from the index:
if (currentLabel < labels.Count)
{
Label lab = labels[currentLabel++];
...
}
else
{
... Stop your timer ...
} You can then access the label directly, and do what you want with it.
Your Timer event can also use the labels collection and the index to decide which ones it should be "changing" and which ones it should leave alone.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
How to convert this code from VB6 to C#:
Set rs = Conn.Execute("SELECT DISTINCT Reci FROM " & CStr(Len(r)))
|
|
|
|
|
More to the point, why are you trying to mix code from VB6 with anything?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I want to convert VB code to C# because I want to connect game in VB6 with other games that I made in C#!
|
|
|
|
|
So why try to use VB6 code? It's database handling for example is completely different and has no direct "translation" to C# - which uses different techniques and structures, such as SqlConnection, SqlCommand, OleDbConnestion, OleDbCommand, Adapters, DataReaders, and so on. You don;t just mechanically translate the code, that won't work. What you need to do is understand the original code and reproduce it using constructs C# does understand. You can't do that on a "line-by-line" basis.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
That's got nothing to do with "labels".
Is that supposed to be a "record set" you're playing at? I think you need the JET engine for that.
|
|
|
|
|
I made it like this but every time I click button it prints System.Windows.Forms.Label.Text:label2, System.Windows.Forms.Label.Text:label3 .......What is wrong???
private void button1_Click(object sender, EventArgs e)
{
Label[] label = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12 };
for (int i = 0; i < 12; i++)
slova[i] = Convert.ToString(label[i]);
if (!button1.Enabled)
return;
if (button1.Text == "Start")
{
i = 0;
timer1.Enabled = true;
button1.Text = "Stop";
button1.Enabled = true;
}
else
{
label[i].Text = slova[i];
i = i + 1;
if (i == 12)
{
textBox1.Enabled = true;
button1.Enabled = false;
button1.Text = "Start";
timer1.Enabled = false;
Vreme.Enabled = true;
textBox1.Focus();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Label[] label = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12 };
long ascii = 0;
ascii = rand.Next(65, 90);
while (!(ascii != Convert.ToInt32("W") & ascii != Convert.ToInt32("X") & ascii != Convert.ToInt32("Q")))
{
ascii = rand.Next(65, 90);
}
label[i].Text = Convert.ToString(ascii);
Application.DoEvents();
}
|
|
|
|
|
Wow, you're all over the place.
What do you think this does? (Or "hope" it does).
slova[i] = Convert.ToString(label[i]);
This will get long and tedious unless you do some research yourself.
|
|
|
|
|
I thinks it assigns label to array?
|
|
|
|
|
You're converting the label (object) "to a string", and assigning THAT to the array; not the label itself.
|
|
|
|
|
|
|
When I click button it should start generating random numbers and every time I press button I should stop generating letters in each textbox separatly.I made it like this but when I start program and click button nothing happens.
int i;
string[] slova = new string[12];
Random rand = new Random();
private void button1_Click(object sender, EventArgs e)
{
Label[] label = new Label[] { label2,label3, label4, label5, label6, label7, label8, label9, label10, label11, label12,label13 };
for (int i = 0; i < 12; i++)
slova[i] = label[i].Text;
if (!button1.Enabled)
return;
if (button1.Text == "Start")
{
i = 0;
timer1.Enabled = true;
button1.Text = "Stop";
button1.Enabled = true;
}
else
{
label[i].Text = slova[i];
i = i + 1;
if (i == 12)
{
textBox1.Enabled = true;
button1.Enabled = false;
button1.Text = "Start";
timer1.Enabled = false;
textBox1.Focus();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
char[] letters = new char[30] { 'A', 'Б', 'В', 'Г', 'Д', 'Ђ', 'Е', 'Ж', 'З', 'И', 'Ј', 'К', 'Л', 'Љ', 'М', 'Н', 'Њ', 'О', 'П', 'Р', 'С', 'Т', 'Ћ', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Џ', 'Ш' };
Label[] label = new Label[] { label2,label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13 };
long ascii = 0;
ascii = rand.Next(65, 90);
while (!(ascii != Convert.ToInt32("W") & ascii != Convert.ToInt32("X") & ascii != Convert.ToInt32("Q")))
{
ascii = rand.Next(65, 90);
}
label[i].Text = Convert.ToString(ascii);
Application.DoEvents();*/
}
|
|
|
|
|
That's what "tracing" is for. Set a "break point" and start debugging. You're too needy.
|
|
|
|
|
I fixed all problems,program is now working!!!
int i;
string[] slova = new string[12];
Random rand = new Random();
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
Label[] label = new Label[] { label2,label3, label4, label5, label6, label7, label8, label9, label10, label11, label12,label13 };
for (int i = 0; i < 12; i++)
slova[i] = label[i].Text;
if (!button1.Enabled)
return;
if (button1.Text == "Start")
{
i = 0;
timer1.Enabled = true;
button1.Text = "Stop";
button1.Enabled = true;
}
else
{
label[i].Text = slova[i];
i = i + 1;
if (i == 12)
{
textBox1.Enabled = true;
button1.Enabled = false;
button1.Text = "Start";
timer1.Enabled = false;
textBox1.Focus();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
char[] letters = new char[30] { 'A', 'Б', 'В', 'Г', 'Д', 'Ђ', 'Е', 'Ж', 'З', 'И', 'Ј', 'К', 'Л', 'Љ', 'М', 'Н', 'Њ', 'О', 'П', 'Р', 'С', 'Т', 'Ћ', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Џ', 'Ш' };
Label[] label = new Label[] { label2,label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13 };
string randomString = "";
randomString += letters[rand.Next(0, 30)].ToString();
label[i].Text = randomString;
}
Whether it can be made to computer take a word from database shuffle it and every time button is clicked it show letters on each textbox separatly???
|
|
|
|
|
Anything can be done given enough time and resources.
And you start by taking a "big" task, and breaking it down into a bunch of simple-to-understand "little" tasks, and then you tackle those one at a time; so that everyone else can understand what you are talking about.
|
|
|
|
|
Can you tell me what these codes does:
Call rs.Open("SELECT DISTINCT Reci FROM " & CStr(duzina), Conn, adOpenKeyset)
rs.Move getRandom(0, rs.RecordCount - 1)
rec = rs.Fields(0).Value
Set rs = Conn.Execute("SELECT DISTINCT Reci FROM " & CStr(Len(r)))
|
|
|
|
|