C# 如何继续使用自由响应文本框添加整数?
我和c#一起工作。 我的目标是能够将一个整数添加到自由响应文本框中。请允许我解释一下。 我有一个名为(红、绿、蓝)的文本框。将使用Replace()替换每种颜色;方法。 像这样:C# 如何继续使用自由响应文本框添加整数?,c#,winforms,C#,Winforms,我和c#一起工作。 我的目标是能够将一个整数添加到自由响应文本框中。请允许我解释一下。 我有一个名为(红、绿、蓝)的文本框。将使用Replace()替换每种颜色;方法。 像这样: private void RedTextBox_TextChanged(object sender, EventArgs e) //ActualFogColor is Result { string ActualColorFog = "game.Lighting.FogColor = Co
private void RedTextBox_TextChanged(object sender, EventArgs e) //ActualFogColor is Result
{
string ActualColorFog = "game.Lighting.FogColor = Color3.new(Red,Green,Blue)";
string Red = RedTextBox.Text;
string FogColorRed = ActualColorFog.Replace("Red", Red);
ActualColorFogScript.Text = FogColorRed;
}
这对所有其他颜色重复,效果很好。我的问题是,我有一个亮度按钮,当你点击它时,它会在输入的数字上加1,但当然我必须把它转换成一个整数。它基本上是初始值+1=新颜色。将首字母替换为新颜色,并将其打印在文本框上
不幸的是我做不到
public partial class main : Form
{
int red = Convert.ToInt32(RedTextbox.Text); }
这是在代码的最顶端,这就是为什么在执行此操作时,它无法识别RedTextBox。
我尝试将整数分配给文本框的原因是,当“RedTextBox.Text='5'”时,它将取5并加1(通过一个按钮),然后打印我在string ActualColorFog=“game.Lighting.FogColor=Color3.new(红、绿、蓝)”中设置为红色的总和代码>
我希望这对你们所有人都有意义,如果你们对我的计划感到困惑,请留下你们的问题。我建议你们后退一步,考虑一下输入的可用性。我的意思是,如果您允许用户自由输入文本,您必须处理输入值,如负数、文字、超出范围的数字(我假定为0-255)、非整数输入等。此外,如果用户可以使用鼠标滚动来增加/减少值,这将是很好的。也许一个数字的上下转换可以解决你的问题?它不是一个标准控件,但有足够多的免费实现
如果您坚持使用文本输入,请执行以下操作:
- 在代码中为组件定义3个整数成员变量
- 为每个文本框提供
Changed
事件处理程序,在该文本框中输入int.TyParse
,检查范围,如果一切正常,如果与新值不同,则更新相应的成员变量
- 可能添加鼠标滚动事件处理程序
- 按钮的
单击
事件处理程序将更新文本框中的成员变量和文本值
一个更好的解决方案是使用依赖属性而不是成员变量,文本框的内容以一种方式绑定到依赖变量,文本框的选中的事件处理程序进行解析。我建议您后退一步,考虑输入的可用性。我的意思是,如果您允许用户自由输入文本,您必须处理输入值,如负数、文字、超出范围的数字(我假定为0-255)、非整数输入等。此外,如果用户可以使用鼠标滚动来增加/减少值,这将是很好的。也许一个数字的上下转换可以解决你的问题?它不是一个标准控件,但有足够多的免费实现
如果您坚持使用文本输入,请执行以下操作:
- 在代码中为组件定义3个整数成员变量
- 为每个文本框提供
Changed
事件处理程序,在该文本框中输入int.TyParse
,检查范围,如果一切正常,如果与新值不同,则更新相应的成员变量
- 可能添加鼠标滚动事件处理程序
- 按钮的
单击
事件处理程序将更新文本框中的成员变量和文本值
一个更好的解决方案是使用依赖项属性而不是成员变量,文本框的内容以一种方式绑定到依赖项变量,文本框的选中的事件处理程序进行解析。我不想讨论你的方法是否好,只想讨论如何解决这个问题
正如我所看到的,最适合您的是可以分配int red=Convert.ToInt32(RedTextbox.Text)代码>而您不能,因为它位于代码的顶部
它无法识别,因为在初始化RedTextBox
之前就已经访问了部分代码。解决方法是将int-red=-1代码>然后
public main() //Your form constructor
{
InitializeComponents();
// I guess you somehow add some value to RedTextbox on form
showing so it need to be before assigning red variable
red = Convert.ToInt32(RedTextbox.Text); //It is important to be after Initializecomponents()
}
我不想讨论你的方法是好是坏,只是想知道如何解决这个问题
正如我所看到的,最适合您的是可以分配int red=Convert.ToInt32(RedTextbox.Text)代码>而您不能,因为它位于代码的顶部
它无法识别,因为在初始化RedTextBox
之前就已经访问了部分代码。解决方法是将int-red=-1代码>然后
public main() //Your form constructor
{
InitializeComponents();
// I guess you somehow add some value to RedTextbox on form
showing so it need to be before assigning red variable
red = Convert.ToInt32(RedTextbox.Text); //It is important to be after Initializecomponents()
}
澄清一下:您有3个文本框,用户可以在其中输入红色、绿色和蓝色的数值。您还可以使用某种文本控件显示“game.Lighting.FogColor=Color3.new(红色、绿色、蓝色)”
,其中红色、绿色和蓝色将替换为用户提供的数值。是吗?@Ackdari是的,完全正确。现在,我有一个亮度按钮,当你点击它时,它会在他们最初输入的数字上加上1,并使用该总和,然后用红色、绿色、蓝色替换。为了澄清,你有3个文本框,用户可以在其中输入红色、绿色和蓝色的数值。您还可以使用某种文本控件显示“game.Lighting.FogColor=Color3.new(红色、绿色、蓝色)”
,其中红色、绿色和蓝色将替换为用户提供的数值。是吗?@Ackdari是的,完全正确。现在,我有一个亮度按钮,当你点击它时,它会在他们最初输入的数字上加上1,并使用该总和,然后用红、绿、蓝替换它;要在每次单击时添加数字?是,或者更确切地说是colorValue=Math.Max(0,Math.Min(255,colorValue+1);
如果您的限制范围是[0,255]。我是否必须使用变量++;来添加t