Input 如何为monogame metro应用程序创建输入文本框

Input 如何为monogame metro应用程序创建输入文本框,input,textbox,xna,monogame,Input,Textbox,Xna,Monogame,基于此线程: 不确定这是否是一个压力,但我需要一个输入文本框为我的单游戏项目,但我 运行metro应用程序版本,有没有关于如何绕过它的线索?我已经试着建造了 我有自己的gui,但我不知道如何将文本范围限制在文本框图像的末尾 宽度,也无法确定如何将当前文本索引移动到具有左键的较早点 箭头或更远的右箭头键盘键,有人能帮我解决这个问题吗 提前感谢您的帮助! 亲切问候,, Romulo Romero我假设您想要一个单行文本框,这比多行文本框要简单得多,因为您不需要换行,而且您已经解决了键和字符输入问题

基于此线程:

不确定这是否是一个压力,但我需要一个输入文本框为我的单游戏项目,但我

运行metro应用程序版本,有没有关于如何绕过它的线索?我已经试着建造了

我有自己的gui,但我不知道如何将文本范围限制在文本框图像的末尾

宽度,也无法确定如何将当前文本索引移动到具有左键的较早点

箭头或更远的右箭头键盘键,有人能帮我解决这个问题吗

提前感谢您的帮助! 亲切问候,,
Romulo Romero

我假设您想要一个单行文本框,这比多行文本框要简单得多,因为您不需要换行,而且您已经解决了键和字符输入问题

我没有使用monogame,但不久前我为xna制作了一个输入框,所以我希望这会有所帮助

您要做的是定义一个背景矩形(也可以是一个图像),并记住文本光标(也称为I-beam指针)的位置。这是光标位于文本的哪个字符之后,您将在其中输入新输入的字符。现在在代码中,这里是您在Textbox类中需要的变量(假设您将使用一个类,这是最简单的):

现在您可以开始处理字符输入了。每当输入字符时,您都希望在光标位置插入该字符。但是,您还需要检查新文本是否不超过后矩形的宽度,因此这是该文本的代码:

public void CharEntered(char c)
{
    string newText = text.Insert(cursorPos, c.ToString()) //Insert the char

    //Check if the text width is shorter than the back rectangle
    if (font.MeasureString(newText).X < backRect.Width)
    {
        text = newText; //Set the text
        cursorPos++; //Move the text cursor
    }
}
public void CharEntered(char c)
{
string newText=text.Insert(cursorPos,c.ToString())//插入字符
//检查文本宽度是否小于后矩形
if(字体度量(newText).X
您现在所要做的就是处理按键输入,并在按下向左或向右箭头键时更改光标。还有画文本等等,但这些东西很简单;)

希望这有帮助! ~z~卢卡

public void CharEntered(char c)
{
    string newText = text.Insert(cursorPos, c.ToString()) //Insert the char

    //Check if the text width is shorter than the back rectangle
    if (font.MeasureString(newText).X < backRect.Width)
    {
        text = newText; //Set the text
        cursorPos++; //Move the text cursor
    }
}