2

アプリケーションに 2 つの複数行テキスト ボックスと 1 つの矢印ボタンがあり、ユーザーが複数行テキスト ボックス 1 から 1 つまたは複数の行を選択すると、その行のステータスが 0 から 1 に更新され、次に、ステータスが 1 の行を複数行のテキスト ボックス 2 にロードしたいのですが、次に何をすればよいかわかりませんでした。

コード:

for (int i = 0; i < txtNewURLs.Lines.Length; i++)
{
    if (txtNewURLs.Lines[i].Select)
    {

    }
}

誰でも私を助けてくれますか、このタスクを実行するための提案をしてもらえますか?

4

1 に答える 1

1

MSDNS のHow to: Create a Multiline TextBox Controlと同様の Multiline TextBox を使用していると仮定すると、 SelectedTextプロパティを利用して、ユーザーが選択したテキストを取得できます。行は次のように区切られます。\r\n

すなわち

以下がある場合(ページ行の間):


テスト0

テスト1


そして、私は行を選択test0test1、その後SelectedTextは になりますtest0\r\ntest1

次に、 で分割して、\r\n選択した各行を取得できます。

// Retrieve selected lines
List<string> SelectedLines = Regex.Split(txtNewURLs.SelectedText, @"\r\n").ToList();
// Check for nothing, Regex.Split returns empty string when no text is inputted
if(SelectedLines.Count == 1) {
    if(String.IsNullOrWhiteSpace(SelectedLines[0])) {
        SelectedLines.Remove("");
    }
}

// Retrieve all lines from textbox
List<string> AllLines = Regex.Split(txtNewURLs.Text, @"\r\n").ToList();
// Check for nothing, Regex.Split returns empty string when no text is inputted
if(AllLines.Count == 1) {
    if(String.IsNullOrWhiteSpace(AllLines[0])) {
        AllLines.Remove("");
    }
}

string SelectedMessage = "The following lines have been selected";
int numSelected = 0;
// Find all selected lines
foreach(string IndividualLine in AllLines) {
    if(SelectedLines.Any(a=>a.Equals(IndividualLine))) {
        SelectedMessage += "\nLine #" + AllLines.FindIndex(a => a.Equals(IndividualLine));
        // Assuming you store each line status in an List, change status to 1
        LineStatus[AllLines.FindIndex(a => a.Equals(IndividualLine));] = 1;
       numSelected++;
    }
}

MessageBox.Show((numSelected > 0) ? SelectedMessage : "No lines selected.");
于 2013-04-11T11:55:31.823 に答える