快速注意 - 我对c#很新,所以如果这很简单,我道歉。
我很难在书中完成一个简单的c#任务。
伪代码 -
文本框文字=用户输入
如果单击按钮1 用星号替换文本框中的所有大写字母
否则,如果单击按钮2 用原始字符替换星号(恢复正常)
这是我到目前为止所拥有的
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.Text.RegularExpressions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += new System.EventHandler(ClickedButton);
button2.Click += new System.EventHandler(ClickedButton);
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void ClickedButton(object sender, EventArgs e)
{
string orignalText = textBox1.Text;
if (sender == button1)
{
string replaced = Regex.Replace(orignalText, @"[A-Z]", "*");
textBox1.Text = (replaced);
}
else if (sender == button2)
{
textBox1.Text = (orignalText);
}
}
}
}
问题是button2显示带有星号的文本。它应该显示(我希望它显示)原始字符。
答案 0 :(得分:3)
originalText
应该是类字段而不是局部变量。此外,如果有人点击button2
,您也不应存储文本框的值。尝试将此ClickedButton
方法替换为:
string orignalText;
public void ClickedButton(object sender, EventArgs e)
{
if (sender == button1)
{
orignalText = textBox1.Text;
string replaced = Regex.Replace(orignalText, @"[A-Z]", "*");
textBox1.Text = replaced;
}
else if (sender == button2)
{
textBox1.Text = orignalText;
}
}
答案 1 :(得分:1)
你有2个问题。首先,您在知道按下哪个按钮之前设置了原始文本。其次,originalText是一个局部变量,所以当你想要重新替换它时,它将不再包含原始文本。
答案 2 :(得分:1)
您只需要全球化originaltext
变量并移动行
string orignalText = textBox1.Text;
进入第一次if
检查。
答案 3 :(得分:1)
试试这个:
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.Text.RegularExpressions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += new System.EventHandler(ClickedButton);
button2.Click += new System.EventHandler(ClickedButton);
}
private void Form1_Load(object sender, EventArgs e)
{
}
string orignalText = null; //you should define this var outside of ClickedButton method to keep its value during button1/2 clicks
public void ClickedButton(object sender, EventArgs e)
{
if (sender == button1)
{
orignalText = textBox1.Text;
string replaced = Regex.Replace(orignalText, @"[A-Z]", "*");
textBox1.Text = replaced;
}
else if (sender == button2)
{
if (orignalText != null) textBox1.Text = orignalText;
}
}
}
}