Не могу понять, как мне вызвать метод TwiceUsedWord() в WordsGen()... - C#
Формулировка задачи:
Не могу понять, как мне вызвать метод TwiceUsedWord() в WordsGen(). Хотя, возможно, я в корне не так все делаю. В общем, нужно проверить, есть ли слово, введенное в textBox1, в textBox2 или в файле "*.txt", если обнаружится совпадение - запретить использование GenerateButton, не обрабатывать нажатие Enter в textbox1 и вывести с помощью MessageBox ошибку. Спасибо за помощь
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace WordsGenerator
{
public partial class Form1 : Form
{
Random rGen;
string fileName = null;
bool progIsModified;
string[] chars = {
"z", "b", "v", "g", "dz", "dzh", "Г°", "s", "p", "f", "k", "t", "ts", "tsh", "Оё", "x", "m", "n", "r", "l", "w", "j",
"a", "i", "u", "Й”", "o", "Й›", "e"};
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
openFileDialog1.FileName = "";
openFileDialog1.Filter =
"Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*";
}
private void WordsGen()
{
rGen = new Random();
var vowelTurn = true;
int p = 0, syllabNum = 0, charsNum = 0;
string wordStr = null;
syllabNum = rGen.Next(0,2);//0 - 2слога;1 - 3слога и т.д.
if (syllabNum == 0) charsNum = 3;
if (syllabNum == 1) charsNum = 5;
for (int i = 0; i < charsNum; i++)
{
if (vowelTurn)
{
p = rGen.Next(22,chars.Length);
wordStr += chars[p];
vowelTurn = !vowelTurn;
}
else if (!vowelTurn)
{
p = rGen.Next(0,22);
wordStr += chars[p];
vowelTurn = !vowelTurn;
}
}
TwiceUsedWord();
textBox2.Text += textBox1.Text + " " + wordStr + Environment.NewLine;
textBox1.Clear();
}
private void выбратьСловарьToolStripMenuItem_Click(object sender,EventArgs e)
{
openFileDialog1.ShowDialog();
if (openFileDialog1.FileName == null) return;
fileName = openFileDialog1.FileName;
label1.Text = "Выб. словарь " + fileName;
}
private void открытьToolStripMenuItem_Click(object sender,EventArgs e)
{
System.Diagnostics.Process.Start(
"Wordpad",fileName);
}
private void сохранитьToolStripMenuItem_Click(object sender,EventArgs e)
{
try
{
var writer = new StreamWriter(
fileName,true,Encoding.UTF8);
writer.Write(textBox2.Text);
writer.Close();
textBox2.Clear();
progIsModified = false;
}
catch (Exception badCase)
{
MessageBox.Show(badCase.Message,"Ошибка",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
}
private void textBox1_KeyDown(object sender,KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) WordsGen();
if (textBox1.Text != null) progIsModified = true;
}
private void TwiceUsedWord(KeyEventArgs e)
{
var reader = new StreamReader(
fileName,Encoding.UTF8);
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (line.StartsWith(textBox1.Text) ||
textBox2.Text.StartsWith(textBox1.Text))
{
GenerateButton.Enabled = false;
e.Handled = true;
MessageBox.Show("Данное слово уже существует","Ошибка",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
}
}
private void GenerateButton_Click(object sender,EventArgs e)
{
WordsGen();
}
}
}Решение задачи: «Не могу понять, как мне вызвать метод TwiceUsedWord() в WordsGen()...»
textual
Листинг программы
KeyEventArgs ke = new KeyEventArgs(Keys.None);