質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

Q&A

解決済

2回答

10027閲覧

xamlで作成したListboxの選択不可

TAKAYASU

総合スコア146

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

0グッド

1クリップ

投稿2015/12/11 01:00

編集2015/12/11 01:15

Visual Studio 2012を用いてWPFアプリケーションを新規に追加しました。
その際に、MainWindow.xamlにListBoxタグを追加し、取得した値をリストボックスに出力し、出力された値をクリックすると別のリストボックスに詳細が出力されるよう試みました。
ですが、ListBoxが選択可能の状態ですので

値の取得処理中でも項目をクリックすることができてしまいます。

値の取得中はListBoxの選択を不可にしたいのですが、調べ方が悪いのか望んでいるものが出てきませんでした。

MainWindow.Xaml:

<ListBox x:Name="TestList" HorizontalAlignment="Center" Height="100" Width="350" VerticalAlignment="Top" Margin="0,10,0,0" SelectionChanged="DeviceList_SelectionChangedArgs" FontSize="12"/>

MainWindow.xaml.cs:

public MainWindow(){

//TestListに項目を追加する

}

private void TestList_SelectionChangedArgs(object sender,
SelectionChangedEventArgs e){

//ここでTestListの選択を不可にしたい

}

TestList.Itemsに何かあるかと探しましたが見つかりませんでしたので他の表現で存在しているんだと推測してます。

よろしくお願い致します。m(_ _)m

追記:
「値の取得処理中でも項目をクリックすることができてしまう」は
MeinWindowで取得した値をTestListに項目として追加するのですが。
TestListに追加された項目を選択すると、別のListBoxに選択した項目の詳細を項目として追加するようにしていて

別のListBoxに項目を表示する際、TestListの項目を選択不可にしたいというのが今回の目的です。
非同期で処理は行っていません。
ListBoxは二つ存在し、ListBox選択時にそのListBoxの選択を不可にしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/12/11 01:04

「値の取得処理中でも項目をクリックすることができてしまう」というのがよくわかりません。何の値の取得中なんでしょうか。非同期処理でも実装しているのでしょうか。MainWIndowのTestListへの項目追加処理を提示してください。
ozwk

2015/12/11 01:30 編集

非同期でもなく、「項目の詳細を表示する際、TestListの項目を選択不可にしたい」というのは、例えば項目Aを一度選択したら(何か決められた操作をしないかぎり)別の項目B,C,...を選択できなくするということですよね?そのようなUIが必要になる場面がよくわからないのであっているか不安です。
TAKAYASU

2015/12/11 01:41

ozwkさん まとめると FormアプリケーションにあるcheckedListBox1.Enabled = false;のようなことをしたいということです。
guest

回答2

0

ベストアンサー

WinFormsのEnabledプロパティに相当するものはIsEnabledです。
ListBox プロパティ

このようなUIが必要になる状況がよくわからないので、
本当に聞きたいことがこれなのか大変不安ですが。

投稿2015/12/11 01:45

編集2015/12/11 01:50
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TAKAYASU

2015/12/11 01:52

回答ありがとうございます。 Isがついてただけだったのですね...>< はい、それであってます、ありがとうございます!!!!!!
ozwk

2015/12/11 01:58

「項目を選択するとデータベースか何か時間がかかるところから詳細を取得しようとして、 その間もUIは操作可能(≒非同期処理)で、その間にまた別の項目を選択するとリクエストをまた送ることになるからそれを防ぎたい。」ということでは? あと.NETは公式リファレンスがちゃんとしているので探すときは読みましょう。
TAKAYASU

2015/12/11 02:03

表現としてはそれであってます。DB等の大規模ではないですが防ぎたかったのが目的です。 どう説明すればよいか私も迷いながら書いてましたので説明に不備がありましたことをお詫びします。 検索の際にどこかのサイトの記事ばっかり検索結果に上がってまして公式のことをすっかり忘れてました。 以後調べ物をする際には公式リファレンスのことも忘れないようにします。 ありがとうございました。
guest

0

こんにちは。

追記編集ありがとうございます。
しかし、依然何をおっしゃっているのか理解できませんでした。

C#

1public MainWindow() 2{ 3 InitializeComponent(); 4 5 TestList.Items.Add("AAA"); 6 TestList.Items.Add("BBB"); 7 TestList.Items.Add("CCC"); 8} 9 10private void TestList_SelectionChanged(object sender, SelectionChangedEventArgs e) 11{ 12 var item = TestList.SelectedItem.ToString(); 13 14 //値取得処理として1秒とか 15 System.Threading.Thread.Sleep(1000); 16 17 TestDetail.Items.Clear(); 18 TestDetail.Items.Add(item + "_1"); 19 TestDetail.Items.Add(item + "_2"); 20 TestDetail.Items.Add(item + "_3"); 21 TestDetail.Items.Add(item + "_4"); 22 TestDetail.Items.Add(item + "_5"); 23}

例えば上記のようにテストしてみますと、全てUIスレッドで処理を行うため、「値の取得処理」中はTestListの項目選択(というかUI操作自体)は出来ないはずです。

仰っている現象は値取得処理を非同期で行なわなければ発生しないのではないかと思いますが…。

投稿2015/12/11 01:24

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TAKAYASU

2015/12/11 01:51

回答ありがとうございます。 「仰っている現象は値取得処理を非同期で行わなければ発生しないのではないかと思いますが...。」 ということはただの知識不足による勘違いの可能性が高いです。 誤解をお招きし申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問