C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ListViewの選択行に空欄があった場合の処理


(過去ログ 162 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■93821 / inTopicNo.1)  ListViewの選択行に空欄があった場合の処理
  
□投稿者/ もぐら (3回)-(2020/02/07(Fri) 15:14:06)

分類:[C#] 

2020/02/07(Fri) 15:39:10 編集(投稿者)

Windowsアプリケーションで開発しています。
ボタンClickのイベントにより
ListViewで選択行のフォーカスを1行ずつ下に移動させています。

private void Button1_Click(object sender, EventArgs e)
{
int nextIndex = listView1.SelectedItems[0].Index + 1;
listView1.Items[nextIndex].Selected = true;
listView1.Items[nextIndex].Focused = true;
listView1.Focus();
listView1.Select();
listView1.EnsureVisible(nextIndex);
}

Listviewで選択している行の一番左の列に空欄があった場合にメッセージボックスを表示させたいです。
どうすればいいでしょうか?
引用返信 編集キー/
■93825 / inTopicNo.2)  Re[1]: ListViewの選択行に空欄があった場合の処理
□投稿者/ りんく (8回)-(2020/02/07(Fri) 16:35:24)
No93821 (もぐら さん) に返信
Formsですよね?
Forms久しぶりなので間違っていたら申し訳ありません。

> Listviewで選択している行の一番左の列に空欄があった場合にメッセージボックスを表示させたいです。

こういうことでしょうか?
if(string.IsNullOrEmpty(listView1.SelectedItems[0].SubItems[0].Text))
{
    MessageBox.Show("空欄!");
}

ちなみに、載せていただいたコードを実行すると
フォーカス選択が正しくできませんでした。
null チェックなどもないので、未選択の状態でボタンを押すと例外になります。

少し変えて確認したコードが以下です。
private void Button1_Click(object sender, EventArgs e)
{
    if (listView1.SelectedItems[0] != null)
    {
        if (listView1.SelectedItems[0].SubItems[0] != null &&
            string.IsNullOrEmpty(listView1.SelectedItems[0].SubItems[0].Text))
        {
            MessageBox.Show("選択している行の一番左が空欄!");
        }
        int index = listView1.SelectedItems[0].Index;
        int nextIndex = index + 1;
        if (nextIndex < listView1.Items.Count)
        {
            listView1.Items[index].Selected = false;
            listView1.Items[index].Focused = false;
            listView1.Items[nextIndex].Selected = true;
            listView1.Items[nextIndex].Focused = true;
            listView1.Focus();
            listView1.Select();
            listView1.EnsureVisible(nextIndex);
        }
    }
}

引用返信 編集キー/
■93826 / inTopicNo.3)  Re[2]: ListViewの選択行に空欄があった場合の処理
□投稿者/ もぐら (4回)-(2020/02/07(Fri) 17:08:25)
No93825 (りんく さん) に返信
> ■No93821 (もぐら さん) に返信
> Formsですよね?
> Forms久しぶりなので間違っていたら申し訳ありません。
>
>>Listviewで選択している行の一番左の列に空欄があった場合にメッセージボックスを表示させたいです。
>
> こういうことでしょうか?
> if(string.IsNullOrEmpty(listView1.SelectedItems[0].SubItems[0].Text))
> {
> MessageBox.Show("空欄!");
> }
>
> ちなみに、載せていただいたコードを実行すると
> フォーカス選択が正しくできませんでした。
> null チェックなどもないので、未選択の状態でボタンを押すと例外になります。

ありがとうございます。そういうことです!
実際のコードでは未選択については別途チェックしています。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -