Skjul textbox ved bestemt radiobutton valg

I dette forum kan du stille og svare på spørgsmål om C# programmering. Alle med en interesse for C# er velkommen!
Besvar
Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49
Skjul textbox ved bestemt radiobutton valg

Indlæg af Bedemanden » 22. mar 2018, 18:52

Hej,

Jeg prøver at skjule bestemte textboxe, når en bestemt radiobutton er valgt.

Jeg har læst mig frem til at jeg skal bruge følgende linje kode: textBoxRadius.Visible = false;

Det virker ikke efter hensigten - min kode ser således ud:

Kode: Vælg alt

 private void buttonBeregn_Click(object sender, EventArgs e)
        {
            
            // oprettelse af nye objekter, som stammer fra superklassen objektet geometri
            // hver klasse får oprettet sit eget objekt nedarvet fra superklasse objektet geometri

            // Kassen
            if (radioButtonKasse.Checked)
            {

                textBoxRadius.Visible = false;

                try
                {
                    radius = 0;
                    længde = Convert.ToDouble(textBoxLængde.Text);
                    bredde = Convert.ToDouble(textBoxBredde.Text);
                    højde = Convert.ToDouble(textBoxHøjde.Text);

                    geometri = new Kasse(længde, bredde, højde, radius);
                }
En som kan se hvorfor det ikke virker?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af cristian » 22. mar 2018, 19:10

Det ligner at hvis du giver din textboks et ID og kalder dette id så burde det virke.

Kode: Vælg alt

<!-- HTML -->
<input type="radio" name="gender" value="male" id="id1"> Male<br>

Kode: Vælg alt

C#
if(condition)
id1.Visible = false;
Hvordan C# får fat i HTML elemented ved jeg ikke, måske på sit postback.
Nu ved vi ikke hvad du vil bruge dette til, men du burde kraftigt overveje at skule elementer hos klienten igennem JavaScript.
Du kan måske endda gøre dette med CSS3 uden JavaScript, for at undgå postbacks da de er langsomme og irriterende.

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af Bedemanden » 22. mar 2018, 22:11

Jeg ved ikke hvordan man laver det, som du snakker om med HTML.

Jeg er i gang med et projekt, som skal kunne udregne areal og rumfang af geometriske figurer.
De skal have input:
- længde
- bredde
- højde
- radius

Når der skal beregnes en figur, som ikke behøver fx højde, længde og bredde, så skal label og textbox forsvinde, når figuren er valgt i radio button.

Jeg opdagede dog at jeg må lave et if/else, fordi hvis jeg først vælge figur1 og den ikke skal bruge radius, så bliver label + textboks fjernet. Hvis jeg så derefter vælger figur2, som skal bruge radius, så er den jo væk fra valget af figur1.

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af jepperask » 24. mar 2018, 11:52

Kan du give os lidt mere information? Er det WPF?

I din kode ligner det at du forsøger at skjule når der trykkes på en knap (buttonBeregn_Click) - men som jeg forstår dit spørgsmål, så skal der forsvinde/tilføjes nogle TextBox elementer når der trykkes på din radiobutton?

Du burde kunne gøre noget alá det her til at opnå det:

Kode: Vælg alt

// XAML
<RadioButton IsChecked="{Binding HideElements}"/>

// C#
private bool _hideElements;
public bool HideElements
{
    get { return _hideElements; }
    set
    {
        _hideElements = value;
        if(_hideElements)
        {
		textBoxRadius.Visible = false;
        } else {
        	textBoxRadius.Visible = true;
        }
    }
}
Jeg har ikke testet det efter, men prøv dig frem. Binding i XAML gør at værdien af din radioButton bliver bundet til din bool, gennem get/set metoderne.

Bedemanden
Begynder
Indlæg:12
Tilmeldt:27. okt 2017, 21:49

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af Bedemanden » 24. mar 2018, 12:56

Hej Jeppe,


Jeg fik det til at lykkes.

Jeg opdagede, som du påpeger at textboxen først skjules, når der trykkes på knappen "beregn".


Jeg oprettede if/else under hver radioButton og fik det til at virke korrekt :)

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af cristian » 27. mar 2018, 19:52

Jeg har ikke arbejdet med JS i noget tid men du kunne gøre noget som følgende

Kode: Vælg alt

<!DOCTYPE>
<html>

<head>
	<style>
		h1 {
			color: green;
			font-weight: bold;
		}
	</style>
</head>

<body>

	<form>
		<input type="radio" onclick="showAndHide(this.id)" id="radio1" name="radio1" class="width,depth" value="height">Height<br>
		<input type="radio" onclick="showAndHide(this.id)" id="radio2" name="radio1" class="depth" value="width">Width<br>
		<input type="radio" onclick="showAndHide(this.id)" id="radio3" name="radio1" class="width,height" value="depth">Depth
	</form>
	
	<h1 id="width">Height</h1>
	<h1 id="height">Width</h1>
	<h1 id="depth">Depth</h1>
	
	<script>
		function showAndHide(id) {
			// Set a color value of green, for previously set values so all H1 elements becomes green again.
			if(localStorage.length > 0) {
				var localStorageValue = localStorage.getItem("id").split(",");
				for(a = 0; a < localStorageValue.length; a++) {
					document.getElementById(localStorageValue[a]).removeAttribute("style");
				}
			}
			
			// Set a color value of red, for the items that we would like to hide when a specific radio button
			// is selected.
			var classes = document.getElementById(id).className.split(",");
			for(i = 0; i < classes.length; i++) {
				document.getElementById(classes[i]).setAttribute("style", "color:red;");
				localStorage.setItem("id", document.getElementById(id).className);
			}			
		}
	</script>
</body>

</html>
class værdierne for hver radio knap diktere hvilke HTML elementer der skal gemmes når denne knap vælges.
Så behøver du ikke lave et server side postback hvilket er langsommere og som giver din server unødvendigt arbejde.

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af jepperask » 29. mar 2018, 12:48

cristian skrev:Jeg har ikke arbejdet med JS i noget tid men du kunne gøre noget som følgende

Kode: Vælg alt

<!DOCTYPE>
<html>

<head>
	<style>
		h1 {
			color: green;
			font-weight: bold;
		}
	</style>
</head>

<body>

	<form>
		<input type="radio" onclick="showAndHide(this.id)" id="radio1" name="radio1" class="width,depth" value="height">Height<br>
		<input type="radio" onclick="showAndHide(this.id)" id="radio2" name="radio1" class="depth" value="width">Width<br>
		<input type="radio" onclick="showAndHide(this.id)" id="radio3" name="radio1" class="width,height" value="depth">Depth
	</form>
	
	<h1 id="width">Height</h1>
	<h1 id="height">Width</h1>
	<h1 id="depth">Depth</h1>
	
	<script>
		function showAndHide(id) {
			// Set a color value of green, for previously set values so all H1 elements becomes green again.
			if(localStorage.length > 0) {
				var localStorageValue = localStorage.getItem("id").split(",");
				for(a = 0; a < localStorageValue.length; a++) {
					document.getElementById(localStorageValue[a]).removeAttribute("style");
				}
			}
			
			// Set a color value of red, for the items that we would like to hide when a specific radio button
			// is selected.
			var classes = document.getElementById(id).className.split(",");
			for(i = 0; i < classes.length; i++) {
				document.getElementById(classes[i]).setAttribute("style", "color:red;");
				localStorage.setItem("id", document.getElementById(id).className);
			}			
		}
	</script>
</body>

</html>
class værdierne for hver radio knap diktere hvilke HTML elementer der skal gemmes når denne knap vælges.
Så behøver du ikke lave et server side postback hvilket er langsommere og som giver din server unødvendigt arbejde.
Jeg tror ikke der er tale om et web-projekt, men et WPF/C# - så jeg tror at alt er clientside og skrevet i C# og XAML.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Skjul textbox ved bestemt radiobutton valg

Indlæg af cristian » 30. mar 2018, 12:59

Oooooo....ooooooooooo that explains a lot.
Walking backwards ssslllooowwwwlllyyyy.

Besvar