C# 如何继续使用自由响应文本框添加整数?

C# 如何继续使用自由响应文本框添加整数?,c#,winforms,C#,Winforms,我和c#一起工作。 我的目标是能够将一个整数添加到自由响应文本框中。请允许我解释一下。 我有一个名为(红、绿、蓝)的文本框。将使用Replace()替换每种颜色;方法。 像这样: private void RedTextBox_TextChanged(object sender, EventArgs e) //ActualFogColor is Result { string ActualColorFog = "game.Lighting.FogColor = Co

我和c#一起工作。 我的目标是能够将一个整数添加到自由响应文本框中。请允许我解释一下。 我有一个名为(红、绿、蓝)的文本框。将使用Replace()替换每种颜色;方法。 像这样:

 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